feat:移除微信、QQ相关的登录分享功能(还未与接口联调测试)
feat:新增google登录、Line登录、Line分享、复制链接(还未与接口联调测试)
This commit is contained in:
@@ -212,7 +212,7 @@ public class XChatApplication extends BaseApp {
|
||||
String channel;
|
||||
channel = MetaDataUtils.INSTANCE.getStringData(Constants.CHANNEL_KEY, application);
|
||||
if (TextUtils.isEmpty(channel)) {
|
||||
channel = "official";
|
||||
channel = com.nnbc123.library.common.Constants.CHANNEL_DEF;
|
||||
}
|
||||
Log.d("XChatApplication", "channel:" + channel);
|
||||
BasicConfig.INSTANCE.setOriginalChannel(channel);
|
||||
|
@@ -17,12 +17,6 @@ import com.nnbc123.app.R;
|
||||
import com.nnbc123.app.common.widget.OriginalDrawStatusClickSpan;
|
||||
import com.nnbc123.app.ui.webview.CommonWebViewActivity;
|
||||
import com.nnbc123.core.UriProvider;
|
||||
import com.nnbc123.core.auth.AuthModel;
|
||||
import com.nnbc123.core.statistic.StatisticManager;
|
||||
import com.nnbc123.core.statistic.protocol.StatisticsProtocol;
|
||||
|
||||
import io.reactivex.SingleObserver;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
public abstract class BaseLoginAct extends BaseActivity {
|
||||
|
||||
@@ -79,73 +73,6 @@ public abstract class BaseLoginAct extends BaseActivity {
|
||||
tvProtocol.setMovementMethod(new LinkMovementMethod());
|
||||
}
|
||||
|
||||
protected void wxLogin() {
|
||||
// 易盾保护 token
|
||||
// String yiDunToken = watchman.getToken(XChatConstants.YI_DUN_BUSINESS_ID);
|
||||
// 数美天网 deviceId
|
||||
// String shuMeiDeviceId = SmAntiFraud.getDeviceId();
|
||||
getDialogManager().showProgressDialog(this, "请稍后");
|
||||
AuthModel.get()
|
||||
.wxLogin("", "")
|
||||
.subscribe(new SingleObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
mCompositeDisposable.add(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(String s) {
|
||||
getDialogManager().dismissDialog();
|
||||
setResult(RESULT_OK);
|
||||
finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
getDialogManager().dismissDialog();
|
||||
dealWithLoginError(e);
|
||||
}
|
||||
});
|
||||
StatisticManager.Instance().onEvent(this,
|
||||
StatisticsProtocol.EVENT_LOGIN_WX_CLICK, "点击微信登录", null);
|
||||
|
||||
}
|
||||
|
||||
protected void qqLogin() {
|
||||
// 易盾保护 token
|
||||
// String yiDunToken = watchman.getToken(XChatConstants.YI_DUN_BUSINESS_ID);
|
||||
// 数美天网 deviceId
|
||||
// String shuMeiDeviceId = SmAntiFraud.getDeviceId();
|
||||
String yiDunToken = "";
|
||||
String shuMeiDeviceId = "";
|
||||
|
||||
getDialogManager().showProgressDialog(this, "请稍后");
|
||||
AuthModel.get()
|
||||
.qqLogin(yiDunToken, shuMeiDeviceId)
|
||||
.subscribe(new SingleObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
mCompositeDisposable.add(d);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(String s) {
|
||||
getDialogManager().dismissDialog();
|
||||
setResult(RESULT_OK);
|
||||
finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
getDialogManager().dismissDialog();
|
||||
dealWithLoginError(e);
|
||||
}
|
||||
});
|
||||
StatisticManager.Instance().onEvent(this,
|
||||
StatisticsProtocol.EVENT_LOGIN_QQ_CLICK, "点击qq登录", null);
|
||||
|
||||
}
|
||||
|
||||
public abstract void dealWithLoginError(Throwable e);
|
||||
|
||||
@Override
|
||||
|
@@ -33,6 +33,8 @@ import com.nnbc123.core.auth.exception.IsSuperAdminException;
|
||||
import com.nnbc123.core.code.CodeType;
|
||||
import com.nnbc123.core.statistic.StatisticManager;
|
||||
import com.nnbc123.core.statistic.protocol.StatisticsProtocol;
|
||||
import com.nnbc123.library.common.SpConstants;
|
||||
import com.nnbc123.library.common.util.SPUtils;
|
||||
import com.nnbc123.library.utils.TextWatcherWrapper;
|
||||
import com.trello.rxlifecycle3.android.ActivityEvent;
|
||||
|
||||
@@ -215,6 +217,7 @@ public class LoginCodeActivity extends BaseLoginAct {
|
||||
|
||||
@Override
|
||||
public void onSuccess(String s) {
|
||||
SPUtils.putString(SpConstants.LOGIN_TYPE, "");
|
||||
getDialogManager().dismissDialog();
|
||||
stopCountDownTimer();
|
||||
setResult(RESULT_OK);
|
||||
|
@@ -24,6 +24,8 @@ import com.nnbc123.core.auth.exception.BanAccountException;
|
||||
import com.nnbc123.core.auth.exception.IsSuperAdminException;
|
||||
import com.nnbc123.core.statistic.StatisticManager;
|
||||
import com.nnbc123.core.statistic.protocol.StatisticsProtocol;
|
||||
import com.nnbc123.library.common.SpConstants;
|
||||
import com.nnbc123.library.common.util.SPUtils;
|
||||
import com.nnbc123.library.utils.TextWatcherWrapper;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
@@ -106,6 +108,7 @@ public class LoginPasswordActivity extends BaseLoginAct {
|
||||
|
||||
@Override
|
||||
public void onSuccess(String s) {
|
||||
SPUtils.putString(SpConstants.LOGIN_TYPE, "");
|
||||
getDialogManager().dismissDialog();
|
||||
setResult(RESULT_OK);
|
||||
finish();
|
||||
|
@@ -12,14 +12,11 @@ import android.widget.TextView;
|
||||
import com.google.android.material.bottomsheet.BottomSheetBehavior;
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialog;
|
||||
import com.nnbc123.app.R;
|
||||
import com.nnbc123.library.utils.SingleToastUtil;
|
||||
|
||||
import cn.sharesdk.framework.Platform;
|
||||
import cn.sharesdk.framework.ShareSDK;
|
||||
import cn.sharesdk.tencent.qq.QQ;
|
||||
import cn.sharesdk.tencent.qzone.QZone;
|
||||
import cn.sharesdk.wechat.friends.Wechat;
|
||||
import cn.sharesdk.wechat.moments.WechatMoments;
|
||||
import cn.sharesdk.google.GooglePlus;
|
||||
import cn.sharesdk.line.Line;
|
||||
|
||||
/**
|
||||
* @author xiaoyu
|
||||
@@ -32,10 +29,8 @@ public class ShareDialog extends BottomSheetDialog implements View.OnClickListen
|
||||
public static final int TYPE_SHARE_H5 = 4;
|
||||
|
||||
private final Context context;
|
||||
private TextView tvWeixin;
|
||||
private TextView tvWeixinpy;
|
||||
private TextView tvQq;
|
||||
private TextView tvQqZone;
|
||||
private TextView tvLink;
|
||||
private TextView tvLine;
|
||||
private TextView tvCancel;
|
||||
private static final String TAG = "ShareDialog";
|
||||
private OnShareDialogItemClick onShareDialogItemClick;
|
||||
@@ -56,16 +51,12 @@ public class ShareDialog extends BottomSheetDialog implements View.OnClickListen
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.dialog_share);
|
||||
setCanceledOnTouchOutside(true);
|
||||
tvWeixin = findViewById(R.id.tv_weixin);
|
||||
tvWeixinpy = findViewById(R.id.tv_weixinpy);
|
||||
tvQq = findViewById(R.id.tv_qq);
|
||||
tvQqZone = findViewById(R.id.tv_qq_zone);
|
||||
tvLine = findViewById(R.id.tv_line);
|
||||
tvLink = findViewById(R.id.tv_share_link);
|
||||
tvCancel = findViewById(R.id.tv_cancel);
|
||||
|
||||
tvWeixin.setOnClickListener(this);
|
||||
tvWeixinpy.setOnClickListener(this);
|
||||
tvQq.setOnClickListener(this);
|
||||
tvQqZone.setOnClickListener(this);
|
||||
tvLine.setOnClickListener(this);
|
||||
tvLink.setOnClickListener(this);
|
||||
tvCancel.setOnClickListener(this);
|
||||
FrameLayout bottomSheet = findViewById(R.id.design_bottom_sheet);
|
||||
if (bottomSheet != null) {
|
||||
@@ -90,38 +81,15 @@ public class ShareDialog extends BottomSheetDialog implements View.OnClickListen
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
switch (v.getId()) {
|
||||
case R.id.tv_erban:
|
||||
case R.id.tv_line:
|
||||
if (onShareDialogItemClick != null) {
|
||||
if (type != TYPE_SHARE_H5) {
|
||||
onShareDialogItemClick.onInAppSharingItemClick();
|
||||
} else {
|
||||
SingleToastUtil.showToast("该内容不能分享给音萌好友");
|
||||
}
|
||||
onShareDialogItemClick.onSharePlatformClick(ShareSDK.getPlatform(Line.NAME));
|
||||
}
|
||||
dismiss();
|
||||
break;
|
||||
|
||||
case R.id.tv_weixin:
|
||||
case R.id.tv_share_link:
|
||||
if (onShareDialogItemClick != null) {
|
||||
onShareDialogItemClick.onSharePlatformClick(ShareSDK.getPlatform(Wechat.NAME));
|
||||
}
|
||||
dismiss();
|
||||
break;
|
||||
case R.id.tv_weixinpy:
|
||||
if (onShareDialogItemClick != null) {
|
||||
onShareDialogItemClick.onSharePlatformClick(ShareSDK.getPlatform(WechatMoments.NAME));
|
||||
}
|
||||
dismiss();
|
||||
break;
|
||||
case R.id.tv_qq:
|
||||
if (onShareDialogItemClick != null) {
|
||||
onShareDialogItemClick.onSharePlatformClick(ShareSDK.getPlatform(QQ.NAME));
|
||||
}
|
||||
dismiss();
|
||||
break;
|
||||
case R.id.tv_qq_zone:
|
||||
if (onShareDialogItemClick != null) {
|
||||
onShareDialogItemClick.onSharePlatformClick(ShareSDK.getPlatform(QZone.NAME));
|
||||
onShareDialogItemClick.onSharePlatformClick(ShareSDK.getPlatform(GooglePlus.NAME));
|
||||
}
|
||||
dismiss();
|
||||
break;
|
||||
|
BIN
app/src/main/res/drawable-xhdpi/ic_share_link.webp
Normal file
BIN
app/src/main/res/drawable-xhdpi/ic_share_link.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
BIN
app/src/main/res/drawable-xhdpi/icon_line.webp
Normal file
BIN
app/src/main/res/drawable-xhdpi/icon_line.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
@@ -3,6 +3,7 @@
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:background="@drawable/bg_dialog_share"
|
||||
android:orientation="vertical">
|
||||
|
||||
@@ -34,60 +35,33 @@
|
||||
android:weightSum="4">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_weixinpy"
|
||||
android:id="@+id/tv_line"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_17"
|
||||
android:layout_marginBottom="19dp"
|
||||
android:layout_weight="1"
|
||||
android:drawableTop="@drawable/icon_weixinpy"
|
||||
android:drawablePadding="9dp"
|
||||
android:gravity="center"
|
||||
android:text="微信朋友圈"
|
||||
android:text="@string/share_line"
|
||||
android:textColor="@color/color_999999"
|
||||
android:textSize="@dimen/font_medium" />
|
||||
android:textSize="@dimen/font_medium"
|
||||
app:drawableTopCompat="@drawable/icon_line" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_weixin"
|
||||
android:id="@+id/tv_share_link"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_17"
|
||||
android:layout_marginBottom="19dp"
|
||||
android:layout_weight="1"
|
||||
android:drawableTop="@drawable/icon_weixin"
|
||||
android:drawablePadding="9dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/text_share_wechat_friends"
|
||||
android:text="@string/share_link"
|
||||
android:textColor="@color/color_999999"
|
||||
android:textSize="@dimen/font_medium" />
|
||||
android:textSize="@dimen/font_medium"
|
||||
app:drawableTopCompat="@drawable/ic_share_link" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_qq_zone"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_17"
|
||||
android:layout_marginBottom="19dp"
|
||||
android:layout_weight="1"
|
||||
android:drawableTop="@drawable/icon_qq_zone"
|
||||
android:drawablePadding="9dp"
|
||||
android:gravity="center"
|
||||
android:text="QQ空间"
|
||||
android:textColor="@color/color_999999"
|
||||
android:textSize="@dimen/font_medium" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_qq"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_17"
|
||||
android:layout_marginBottom="19dp"
|
||||
android:layout_weight="1"
|
||||
android:drawableTop="@drawable/icon_qq"
|
||||
android:drawablePadding="9dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/text_share_qq_friends"
|
||||
android:textColor="@color/color_999999"
|
||||
android:textSize="@dimen/font_medium" />
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
@@ -531,6 +531,8 @@
|
||||
<string name="text_share_erban_friends">好友</string>
|
||||
<string name="text_share_wechat_friends">微信好友</string>
|
||||
<string name="text_share_qq_friends">QQ好友</string>
|
||||
<string name="share_line">Line</string>
|
||||
<string name="share_link">复制链接</string>
|
||||
<string name="tab_title_team">群</string>
|
||||
<string name="text_team_join_auth_on">开启身份验证</string>
|
||||
<string name="text_team_join_auth_off">关闭身份验证</string>
|
||||
|
@@ -17,7 +17,6 @@ import com.netease.nim.uikit.StatusBarUtil;
|
||||
import com.nnbc123.app.R;
|
||||
import com.nnbc123.app.base.BaseLoginAct;
|
||||
import com.nnbc123.app.ui.login.LoginPasswordActivity;
|
||||
import com.nnbc123.app.ui.login.LoginPhoneActivity;
|
||||
import com.nnbc123.core.DemoCache;
|
||||
import com.nnbc123.core.auth.AuthModel;
|
||||
import com.nnbc123.core.auth.event.LoginEvent;
|
||||
@@ -26,7 +25,12 @@ import com.nnbc123.core.auth.exception.BanAccountException;
|
||||
import com.nnbc123.core.auth.exception.IsSuperAdminException;
|
||||
import com.nnbc123.core.statistic.StatisticManager;
|
||||
import com.nnbc123.core.statistic.protocol.StatisticsProtocol;
|
||||
import com.nnbc123.library.common.Constants;
|
||||
import com.nnbc123.library.common.SpConstants;
|
||||
import com.nnbc123.library.common.util.SPUtils;
|
||||
import com.nnbc123.library.utils.AppMetaDataUtil;
|
||||
import com.nnbc123.library.utils.SingleToastUtil;
|
||||
import com.trello.rxlifecycle3.android.ActivityEvent;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
@@ -37,6 +41,9 @@ import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
|
||||
import io.reactivex.SingleObserver;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
public class QuickPassLoginAct extends BaseLoginAct implements View.OnClickListener {
|
||||
|
||||
private static final String NEED_CHECKED_PROTOCOL = "need_checked_protocol";
|
||||
@@ -64,6 +71,20 @@ public class QuickPassLoginAct extends BaseLoginAct implements View.OnClickListe
|
||||
private void onFindViews() {
|
||||
tvProtocol = findViewById(R.id.tv_protocol);
|
||||
tvProtocolHint = findViewById(R.id.tv_protocol_hint);
|
||||
if (AppMetaDataUtil.getChannelID().equals(Constants.CHANNEL_GOOGLE)) {
|
||||
findViewById(R.id.cs_google).setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
findViewById(R.id.cs_google).setVisibility(View.GONE);
|
||||
}
|
||||
String loginType = SPUtils.getString(SpConstants.LOGIN_TYPE, "");
|
||||
switch (loginType) {
|
||||
case SpConstants.GOOGLE:
|
||||
findViewById(R.id.tv_google_last_login).setVisibility(View.VISIBLE);
|
||||
break;
|
||||
case SpConstants.LINE:
|
||||
findViewById(R.id.tv_line_last_login).setVisibility(View.VISIBLE);
|
||||
break;
|
||||
}
|
||||
setProtocol();
|
||||
}
|
||||
|
||||
@@ -99,10 +120,58 @@ public class QuickPassLoginAct extends BaseLoginAct implements View.OnClickListe
|
||||
LoginPasswordActivity.start(QuickPassLoginAct.this);
|
||||
break;
|
||||
case R.id.cs_google:
|
||||
SingleToastUtil.showToast("Google");
|
||||
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_LOGIN_GOOGLE_CLICK);
|
||||
getDialogManager().showProgressDialog(this);
|
||||
AuthModel.get().googleLogin()
|
||||
.compose(bindUntilEvent(ActivityEvent.DESTROY))
|
||||
.subscribe(new SingleObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(String result) {
|
||||
getDialogManager().dismissDialog();
|
||||
SPUtils.putString(SpConstants.LOGIN_TYPE, SpConstants.GOOGLE);
|
||||
setResult(RESULT_OK);
|
||||
finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
getDialogManager().dismissDialog();
|
||||
dealWithLoginError(e);
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
break;
|
||||
case R.id.cs_line:
|
||||
SingleToastUtil.showToast("Line");
|
||||
StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_LOGIN_LINE_CLICK);
|
||||
getDialogManager().showProgressDialog(this);
|
||||
AuthModel.get().lineLogin()
|
||||
.compose(bindUntilEvent(ActivityEvent.DESTROY))
|
||||
.subscribe(new SingleObserver<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(String result) {
|
||||
getDialogManager().dismissDialog();
|
||||
SPUtils.putString(SpConstants.LOGIN_TYPE, SpConstants.LINE);
|
||||
setResult(RESULT_OK);
|
||||
finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
getDialogManager().dismissDialog();
|
||||
dealWithLoginError(e);
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -155,10 +224,8 @@ public class QuickPassLoginAct extends BaseLoginAct implements View.OnClickListe
|
||||
spannableString, "我知道了", true, null);
|
||||
} else if (e instanceof IOException) {
|
||||
toast("网络异常,请检查您的网络再试~");
|
||||
LoginPhoneActivity.startForResult(QuickPassLoginAct.this, quickPassRequestCode);
|
||||
} else {
|
||||
toast(e.getMessage());
|
||||
LoginPhoneActivity.startForResult(QuickPassLoginAct.this, quickPassRequestCode);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,6 +255,7 @@ public class QuickPassLoginAct extends BaseLoginAct implements View.OnClickListe
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
getDialogManager().dismissDialog();
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
|
||||
|
@@ -2,6 +2,8 @@ package com.nnbc123.core.auth;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import com.nnbc123.core.R;
|
||||
import com.nnbc123.core.utils.LogUtils;
|
||||
import com.netease.nim.uikit.api.NimUIKit;
|
||||
import com.netease.nim.uikit.common.util.log.LogUtil;
|
||||
@@ -17,6 +19,8 @@ import com.netease.nimlib.sdk.auth.AuthServiceObserver;
|
||||
import com.netease.nimlib.sdk.auth.LoginInfo;
|
||||
import com.netease.nimlib.sdk.mixpush.MixPushService;
|
||||
import com.netease.nimlib.sdk.msg.MsgService;
|
||||
import com.nnbc123.library.utils.DeviceUtils;
|
||||
import com.nnbc123.library.utils.ResUtil;
|
||||
import com.orhanobut.logger.Logger;
|
||||
import com.nnbc123.core.DemoCache;
|
||||
import com.nnbc123.core.auth.entity.AccountInfo;
|
||||
@@ -58,8 +62,8 @@ import java.util.Map;
|
||||
import cn.sharesdk.framework.Platform;
|
||||
import cn.sharesdk.framework.PlatformActionListener;
|
||||
import cn.sharesdk.framework.ShareSDK;
|
||||
import cn.sharesdk.tencent.qq.QQ;
|
||||
import cn.sharesdk.wechat.friends.Wechat;
|
||||
import cn.sharesdk.google.GooglePlus;
|
||||
import cn.sharesdk.line.Line;
|
||||
import io.reactivex.Single;
|
||||
import io.reactivex.SingleEmitter;
|
||||
import io.reactivex.SingleOnSubscribe;
|
||||
@@ -101,21 +105,13 @@ public class AuthModel extends BaseModel implements IAuthModel {
|
||||
*/
|
||||
public static final int CODE_BIG_HEAD_NUM = 25002;
|
||||
private static final String TAG = "AuthModel";
|
||||
/**
|
||||
* 类型(1、手机号/耳伴号登陆,2、手机号/耳伴号登陆并绑定QQ)
|
||||
*/
|
||||
private static final int TYPE_LOGIN_NORMAL = 1;
|
||||
private static final int TYPE_LOGIN_BIND_QQ = 2;
|
||||
/**
|
||||
* 校验验证码
|
||||
*/
|
||||
private static final int CODE_SHOW_CODE = 107;
|
||||
/**
|
||||
* 超管登录校验验证码
|
||||
*/
|
||||
private static final int SUPER_CODE_SHOW_CODE = 136;
|
||||
private static final int TYPE_WECHAT_LOGIN = 1;//微信登录类型
|
||||
private static final int TYPE_QQ_LOGIN = 2;//QQ登录类型
|
||||
public static final int TYPE_GOOGLE_LOGIN = 8;
|
||||
public static final int TYPE_LINE_LOGIN = 9;
|
||||
public static final int TYPE_FACEBOOK_LOGIN = 10;
|
||||
private static volatile AuthModel instance = null;
|
||||
/**
|
||||
* 是否来源于登录
|
||||
@@ -126,8 +122,6 @@ public class AuthModel extends BaseModel implements IAuthModel {
|
||||
private AccountInfo currentAccountInfo;
|
||||
private TicketInfo ticketInfo;
|
||||
private ThirdUserInfo thirdUserInfo;
|
||||
private Platform wechat;
|
||||
private Platform qq;
|
||||
/**
|
||||
* *************************************************** IM ************************************************************
|
||||
*/
|
||||
@@ -299,142 +293,150 @@ public class AuthModel extends BaseModel implements IAuthModel {
|
||||
}
|
||||
|
||||
/**
|
||||
* 微信登录
|
||||
* line
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Single<String> wxLogin(String yiDunToken, String shuMeiDeviceId) {
|
||||
public Single<String> lineLogin() {
|
||||
return Single.create(new SingleOnSubscribe<Platform>() {
|
||||
//<editor-fold defaultstate="collapsed" desc="delombok">
|
||||
@Override
|
||||
public void subscribe(SingleEmitter<Platform> e) throws Exception {
|
||||
wechat = ShareSDK.getPlatform(Wechat.NAME);
|
||||
if (wechat == null || !wechat.isClientValid()) {
|
||||
e.onError(new Throwable("未安装微信"));
|
||||
Platform line = ShareSDK.getPlatform(Line.NAME);
|
||||
//是否安装客户端
|
||||
if (!DeviceUtils.isAppInstalled(getContext(), "jp.naver.line.android")) {
|
||||
e.onError(new Throwable(ResUtil.getString(R.string.core_auth_authmodel_06)));
|
||||
return;
|
||||
}
|
||||
if (wechat.isAuthValid()) {
|
||||
wechat.removeAccount(true);
|
||||
if (line.isAuthValid()) {
|
||||
line.removeAccount(true);
|
||||
}
|
||||
wechat.setPlatformActionListener(new PlatformActionListener() {
|
||||
//</editor-fold>
|
||||
@Override
|
||||
public void onComplete(final Platform platform, int i, HashMap<String, Object> hashMap) {
|
||||
if (i == Platform.ACTION_USER_INFOR) {
|
||||
String openid = platform.getDb().getUserId();
|
||||
String unionid = platform.getDb().get("unionid");
|
||||
Logger.i("openid" + openid + "unionid" + unionid + platform.getDb().getUserIcon());
|
||||
thirdUserInfo = new ThirdUserInfo();
|
||||
thirdUserInfo.setPlatform("微信");
|
||||
thirdUserInfo.setType(ThirdUserInfo.TYPE_WX);
|
||||
thirdUserInfo.setUserName(platform.getDb().getUserName());
|
||||
thirdUserInfo.setUserGender(platform.getDb().getUserGender());
|
||||
thirdUserInfo.setUserIcon(platform.getDb().getUserIcon());
|
||||
e.onSuccess(platform);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onError(Platform platform, int i, Throwable throwable) {
|
||||
e.onError(new Throwable("获取微信信息失败"));
|
||||
}
|
||||
@Override
|
||||
public void onCancel(Platform platform, int i) {
|
||||
e.onError(new Throwable("微信登录取消"));
|
||||
}
|
||||
});
|
||||
wechat.SSOSetting(false);
|
||||
wechat.showUser(null);
|
||||
}
|
||||
}).flatMap(new Function<Platform, SingleSource<String>>() {
|
||||
@Override
|
||||
public SingleSource<String> apply(Platform platform) throws Exception {
|
||||
String openid = platform.getDb().getUserId();
|
||||
String unionid = platform.getDb().get("unionid");
|
||||
return thirdLogin(openid, unionid, TYPE_WECHAT_LOGIN, yiDunToken, shuMeiDeviceId);
|
||||
}
|
||||
}).flatMap(new Function<String, SingleSource<String>>() {
|
||||
@Override
|
||||
public SingleSource<String> apply(String s) throws Exception {
|
||||
return imLogin(currentAccountInfo);
|
||||
}
|
||||
}).subscribeOn(AndroidSchedulers.mainThread()).observeOn(AndroidSchedulers.mainThread()).doOnSuccess(new Consumer<String>() {
|
||||
@Override
|
||||
public void accept(String s) throws Exception {
|
||||
//登录成功
|
||||
EventBus.getDefault().post(new LoginEvent());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* QQ登录
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Single<String> qqLogin(String yiDunToken, String shuMeiDeviceId) {
|
||||
return Single.create(new SingleOnSubscribe<Platform>() {
|
||||
//<editor-fold defaultstate="collapsed" desc="delombok">
|
||||
@Override
|
||||
public void subscribe(SingleEmitter<Platform> e) throws Exception {
|
||||
qq = ShareSDK.getPlatform(QQ.NAME);
|
||||
if (qq == null || !qq.isClientValid()) {
|
||||
e.onError(new Throwable("未安装腾讯QQ或TIM"));
|
||||
return;
|
||||
}
|
||||
if (qq.isAuthValid()) {
|
||||
qq.removeAccount(true);
|
||||
}
|
||||
qq.setPlatformActionListener(new PlatformActionListener() {
|
||||
//</editor-fold>
|
||||
line.setPlatformActionListener(new PlatformActionListener() {
|
||||
@Override
|
||||
public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {
|
||||
if (i == Platform.ACTION_USER_INFOR) {
|
||||
String openid = platform.getDb().getUserId();
|
||||
String unionid = platform.getDb().get("unionid");
|
||||
Logger.i("openid:" + openid + " unionid:" + unionid + platform.getDb().getUserIcon());
|
||||
|
||||
thirdUserInfo = new ThirdUserInfo();
|
||||
thirdUserInfo.setType(ThirdUserInfo.TYPE_QQ);
|
||||
thirdUserInfo.setType(ThirdUserInfo.TYPE_LINE);
|
||||
thirdUserInfo.setPlatform("LINE");
|
||||
thirdUserInfo.setUserName(platform.getDb().getUserName());
|
||||
thirdUserInfo.setUserGender(platform.getDb().getUserGender());
|
||||
thirdUserInfo.setUserIcon(platform.getDb().getUserIcon());
|
||||
e.onSuccess(platform);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Platform platform, int i, Throwable throwable) {
|
||||
e.onError(new Throwable("获取QQ登录信息错误"));
|
||||
e.onError(new Throwable(ResUtil.getString(R.string.core_auth_authmodel_010) + i));
|
||||
throwable.printStackTrace();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancel(Platform platform, int i) {
|
||||
e.onError(new Throwable("QQ登录取消"));
|
||||
e.onError(new Throwable(ResUtil.getString(R.string.core_auth_authmodel_011)));
|
||||
}
|
||||
});
|
||||
//<editor-fold defaultstate="collapsed" desc="delombok">
|
||||
qq.SSOSetting(false);
|
||||
qq.showUser(null);
|
||||
line.SSOSetting(false);
|
||||
line.showUser(null);
|
||||
|
||||
}
|
||||
}).flatMap(new Function<Platform, SingleSource<String>>() {
|
||||
})
|
||||
.flatMap(platform -> {
|
||||
String openid = platform.getDb().getUserId();
|
||||
String unionid = platform.getDb().getUserId();
|
||||
String avatar = thirdUserInfo.getUserIcon();
|
||||
if (avatar != null && avatar.equals("null")) {
|
||||
avatar = null;
|
||||
}
|
||||
thirdUserInfo.setUserIcon(avatar);
|
||||
String gender = thirdUserInfo.getUserGender();
|
||||
if (gender != null && !gender.trim().isEmpty()) {
|
||||
gender = gender.replace("m", "1").replace("f", "2");
|
||||
}
|
||||
thirdUserInfo.setUserGender(gender);
|
||||
return thirdLogin(openid, unionid, TYPE_LINE_LOGIN, "", "");
|
||||
})
|
||||
.flatMap(s -> imLogin(currentAccountInfo))
|
||||
.subscribeOn(AndroidSchedulers.mainThread())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.compose(RxHelper.handleException())
|
||||
.doOnSuccess(s -> EventBus.getDefault().post(new LoginEvent()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public SingleSource<String> apply(Platform platform) throws Exception {
|
||||
public Single<String> googleLogin() {
|
||||
return Single.create(new SingleOnSubscribe<Platform>() {
|
||||
@Override
|
||||
public void subscribe(SingleEmitter<Platform> e) throws Exception {
|
||||
Platform google = ShareSDK.getPlatform(GooglePlus.NAME);
|
||||
//是否安装客户端
|
||||
if (!DeviceUtils.isAppInstalled(getContext(), "com.android.vending")) {
|
||||
e.onError(new Throwable(ResUtil.getString(R.string.core_auth_authmodel_09)));
|
||||
return;
|
||||
}
|
||||
//判断指定平台是否已经完成授权
|
||||
if (google.isAuthValid()) {
|
||||
google.removeAccount(true);
|
||||
}
|
||||
google.setPlatformActionListener(new PlatformActionListener() {
|
||||
@Override
|
||||
public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {
|
||||
if (i == Platform.ACTION_USER_INFOR) {
|
||||
String openid = platform.getDb().getUserId();
|
||||
String unionid = platform.getDb().get("unionid");
|
||||
return thirdLogin(openid, unionid, TYPE_QQ_LOGIN, yiDunToken, shuMeiDeviceId);
|
||||
Logger.i("openid:" + openid + " unionid:" + unionid + platform.getDb().getUserIcon());
|
||||
|
||||
thirdUserInfo = new ThirdUserInfo();
|
||||
thirdUserInfo.setType(ThirdUserInfo.TYPE_GOOGLE);
|
||||
thirdUserInfo.setPlatform("Google");
|
||||
thirdUserInfo.setUserName(platform.getDb().getUserName());
|
||||
thirdUserInfo.setUserGender(platform.getDb().getUserGender());
|
||||
thirdUserInfo.setUserIcon(platform.getDb().getUserIcon());
|
||||
e.onSuccess(platform);
|
||||
}
|
||||
}).flatMap(new Function<String, SingleSource<String>>() {
|
||||
@Override
|
||||
public SingleSource<String> apply(String s) throws Exception {
|
||||
return imLogin(currentAccountInfo);
|
||||
}
|
||||
}).subscribeOn(AndroidSchedulers.mainThread()).observeOn(AndroidSchedulers.mainThread()).doOnSuccess(new Consumer<String>() {
|
||||
|
||||
@Override
|
||||
public void accept(String s) throws Exception {
|
||||
//登录成功
|
||||
EventBus.getDefault().post(new LoginEvent());
|
||||
public void onError(Platform platform, int i, Throwable throwable) {
|
||||
throwable.printStackTrace();
|
||||
LogUtils.d("googleLogin" + i);
|
||||
e.onError(new Throwable(ResUtil.getString(R.string.core_auth_authmodel_010) + i));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancel(Platform platform, int i) {
|
||||
e.onError(new Throwable(ResUtil.getString(R.string.core_auth_authmodel_011)));
|
||||
}
|
||||
});
|
||||
//</editor-fold>
|
||||
google.SSOSetting(false);
|
||||
google.showUser(null);
|
||||
|
||||
}
|
||||
})
|
||||
.flatMap(platform -> {
|
||||
String openid = platform.getDb().getUserId();
|
||||
String unionid = platform.getDb().getUserId();
|
||||
String avatar = thirdUserInfo.getUserIcon();
|
||||
if (avatar != null && avatar.equals("null")) {
|
||||
avatar = null;
|
||||
}
|
||||
thirdUserInfo.setUserIcon(avatar);
|
||||
String gender = thirdUserInfo.getUserGender();
|
||||
if (gender != null && !gender.trim().isEmpty()) {
|
||||
gender = gender.replace("m", "1").replace("f", "2");
|
||||
}
|
||||
thirdUserInfo.setUserGender(gender);
|
||||
return thirdLogin(openid, unionid, TYPE_GOOGLE_LOGIN, "", "");
|
||||
})
|
||||
.flatMap(s -> imLogin(currentAccountInfo))
|
||||
.subscribeOn(AndroidSchedulers.mainThread())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.compose(RxHelper.handleException())
|
||||
.doOnSuccess(s -> EventBus.getDefault().post(new LoginEvent()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -49,9 +49,9 @@ public interface IAuthModel extends IModel{
|
||||
*/
|
||||
Single<String> login(String account, String password, String code, String yiDunToken, String shuMeiDeviceId);
|
||||
|
||||
Single<String> wxLogin(String yiDunToken, String shuMeiDeviceId);
|
||||
Single<String> lineLogin();
|
||||
|
||||
Single<String> qqLogin(String yiDunToken, String shuMeiDeviceId);
|
||||
Single<String> googleLogin();
|
||||
|
||||
Single<ServiceResult<String>> isExistsQQAccount(String qqOpenid);
|
||||
|
||||
|
@@ -18,6 +18,10 @@ public class ThirdUserInfo implements Serializable {
|
||||
public static final int TYPE_QQ = 2;
|
||||
public static final int TYPE_ONEKEY = 3;
|
||||
|
||||
public static final int TYPE_FACEBOOK = 1;
|
||||
public static final int TYPE_LINE = 2;
|
||||
public static final int TYPE_GOOGLE = 3;
|
||||
|
||||
public int getType() {
|
||||
return type;
|
||||
}
|
||||
|
@@ -1,9 +1,15 @@
|
||||
package com.nnbc123.core.share;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.ClipData;
|
||||
import android.content.ClipboardManager;
|
||||
import android.content.Context;
|
||||
|
||||
import com.netease.nimlib.sdk.chatroom.ChatRoomMessageBuilder;
|
||||
import com.netease.nimlib.sdk.chatroom.model.ChatRoomMessage;
|
||||
import com.nnbc123.core.R;
|
||||
import com.nnbc123.library.common.util.Logger;
|
||||
import com.nnbc123.library.utils.ResUtil;
|
||||
import com.nnbc123.xchat_android_constants.XChatConstants;
|
||||
import com.nnbc123.core.UriProvider;
|
||||
import com.nnbc123.core.auth.AuthModel;
|
||||
@@ -26,10 +32,8 @@ import java.util.HashMap;
|
||||
|
||||
import cn.sharesdk.framework.Platform;
|
||||
import cn.sharesdk.framework.PlatformActionListener;
|
||||
import cn.sharesdk.tencent.qq.QQ;
|
||||
import cn.sharesdk.tencent.qzone.QZone;
|
||||
import cn.sharesdk.wechat.friends.Wechat;
|
||||
import cn.sharesdk.wechat.moments.WechatMoments;
|
||||
import cn.sharesdk.google.GooglePlus;
|
||||
import cn.sharesdk.line.Line;
|
||||
import io.reactivex.Single;
|
||||
import io.reactivex.SingleEmitter;
|
||||
import io.reactivex.SingleOnSubscribe;
|
||||
@@ -65,14 +69,6 @@ public class ShareModel extends BaseModel implements IShareModel {
|
||||
@Override
|
||||
public void subscribe(SingleEmitter<String> emitter) throws Exception {
|
||||
if (null != webViewInfo && platform != null) {
|
||||
Platform.ShareParams sp = new Platform.ShareParams();
|
||||
sp.setText(webViewInfo.getDesc());
|
||||
sp.setTitle(webViewInfo.getTitle());
|
||||
if (httpsUrl) {
|
||||
sp.setImageUrl(webViewInfo.getImgUrl().replace("http:", "https:"));
|
||||
} else {
|
||||
sp.setImageUrl(webViewInfo.getImgUrl());
|
||||
}
|
||||
String siteUrl = webViewInfo.getShowUrl();
|
||||
String params = "shareUid=" + String.valueOf(AuthModel.get().getCurrentUid());
|
||||
if (siteUrl.contains("?")) {
|
||||
@@ -84,14 +80,21 @@ public class ShareModel extends BaseModel implements IShareModel {
|
||||
} else {
|
||||
siteUrl += "?" + params;
|
||||
}
|
||||
//QQ空间分享
|
||||
sp.setSite(webViewInfo.getDesc());
|
||||
sp.setSiteUrl(siteUrl);
|
||||
//QQ分享
|
||||
sp.setTitleUrl(siteUrl);
|
||||
//微信朋友圈分享
|
||||
sp.setUrl(siteUrl);
|
||||
sp.setShareType(Platform.SHARE_WEBPAGE);
|
||||
if (platform.getName().equals(GooglePlus.NAME)) {
|
||||
copyLink(siteUrl, emitter);
|
||||
return;
|
||||
}
|
||||
Platform.ShareParams sp = new Platform.ShareParams();
|
||||
sp.setText(webViewInfo.getDesc());
|
||||
sp.setTitle(webViewInfo.getTitle());
|
||||
if (httpsUrl) {
|
||||
sp.setImageUrl(webViewInfo.getImgUrl().replace("http:", "https:"));
|
||||
} else {
|
||||
sp.setImageUrl(webViewInfo.getImgUrl());
|
||||
}
|
||||
if (platform.getName().equals(Line.NAME)) {
|
||||
sp.setText(webViewInfo.getDesc() + "[" + webViewInfo.getLink() + "]");
|
||||
}
|
||||
platform.setPlatformActionListener(new PlatformActionListener() {
|
||||
@Override
|
||||
public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {
|
||||
@@ -112,7 +115,11 @@ public class ShareModel extends BaseModel implements IShareModel {
|
||||
|
||||
@Override
|
||||
public void onError(Platform platform, int i, Throwable throwable) {
|
||||
emitter.onError(new Throwable(MSG.failed));
|
||||
String errorMsg = MSG.failed;
|
||||
if (throwable.getMessage().contains("not installed")) {
|
||||
errorMsg = ResUtil.getString(R.string.not_install_app);
|
||||
}
|
||||
emitter.onError(new Throwable(errorMsg));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -139,24 +146,21 @@ public class ShareModel extends BaseModel implements IShareModel {
|
||||
UserModel.get().getUserInfo(roomUid).subscribe(userInfo -> {
|
||||
//无UI API
|
||||
if (userInfo != null && platform != null) {
|
||||
Platform.ShareParams sp = new Platform.ShareParams();
|
||||
sp.setText(title + XChatConstants.SHARE_ROOM_TEXT);
|
||||
sp.setTitle(XChatConstants.SHARE_ROOM_TITLE);
|
||||
sp.setImageUrl(userInfo.getAvatar());
|
||||
final String siteUrl = UriProvider.WEB_URL + XChatConstants.SHARE_ROOM_URL +
|
||||
AuthModel.get().getCurrentUid() + "&uid=" + roomUid + "&room_name=" +
|
||||
URLEncoder.encode(title, "utf8") + "&room_id=" + roomId + "&room_avatar=" +
|
||||
URLEncoder.encode(room_avatar, "utf8") + "&share_name=" +
|
||||
URLEncoder.encode(UserModel.get().getCacheLoginUserInfo().getNick(), "utf8");
|
||||
//QQ空间分享
|
||||
|
||||
sp.setSite(title + XChatConstants.SHARE_ROOM_TEXT);
|
||||
sp.setSiteUrl(siteUrl);
|
||||
//QQ分享
|
||||
sp.setTitleUrl(siteUrl);
|
||||
//微信朋友圈分享
|
||||
sp.setUrl(siteUrl);
|
||||
sp.setShareType(Platform.SHARE_WEBPAGE);
|
||||
if (platform.getName().equals(GooglePlus.NAME)) {
|
||||
copyLink(siteUrl, emitter);
|
||||
} else {
|
||||
Platform.ShareParams sp = new Platform.ShareParams();
|
||||
sp.setText(title + XChatConstants.SHARE_ROOM_TEXT);
|
||||
sp.setTitle(XChatConstants.SHARE_ROOM_TITLE);
|
||||
sp.setImageUrl(userInfo.getAvatar());
|
||||
if (platform.getName().equals(Line.NAME)) {
|
||||
sp.setText(XChatConstants.SHARE_ROOM_TEXT + "[" + siteUrl + "]");
|
||||
}
|
||||
platform.setPlatformActionListener(new PlatformActionListener() {
|
||||
@Override
|
||||
public void onComplete(Platform platform1, int i, HashMap<String, Object> hashMap) {
|
||||
@@ -168,7 +172,11 @@ public class ShareModel extends BaseModel implements IShareModel {
|
||||
|
||||
@Override
|
||||
public void onError(Platform platform1, int i, Throwable throwable) {
|
||||
emitter.onError(new Throwable(MSG.failed));
|
||||
String errorMsg = MSG.failed;
|
||||
if (throwable.getMessage().contains("not installed")) {
|
||||
errorMsg = ResUtil.getString(R.string.not_install_app);
|
||||
}
|
||||
emitter.onError(new Throwable(errorMsg));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -178,6 +186,7 @@ public class ShareModel extends BaseModel implements IShareModel {
|
||||
});
|
||||
platform.share(sp);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -194,17 +203,12 @@ public class ShareModel extends BaseModel implements IShareModel {
|
||||
*/
|
||||
private void reportShare(String roomUid, int sharePageId, Platform platform, String shareUrl) {
|
||||
int shareType = 0;
|
||||
if (platform.getName().equals(Wechat.NAME)) {
|
||||
if (platform.getName().equals(GooglePlus.NAME)) {
|
||||
shareType = 1;
|
||||
} else if (platform.getName().equals(WechatMoments.NAME)) {
|
||||
} else if (platform.getName().equals(Line.NAME)) {
|
||||
shareType = 2;
|
||||
} else if (platform.getName().equals(QQ.NAME)) {
|
||||
shareType = 3;
|
||||
} else if (platform.getName().equals(QZone.NAME)) {
|
||||
shareType = 4;
|
||||
}
|
||||
|
||||
|
||||
api.getShareRedPacket(
|
||||
String.valueOf(AuthModel.get().getCurrentUid()),
|
||||
roomUid,
|
||||
@@ -229,14 +233,18 @@ public class ShareModel extends BaseModel implements IShareModel {
|
||||
public void subscribe(SingleEmitter<String> emitter) throws Exception {
|
||||
//无UI API
|
||||
final String shareLink = UriProvider.WEB_URL + XChatConstants.SHARE_FAMILY_URL;
|
||||
final String siteUrl = shareLink + "?shareUid=" + String.valueOf(AuthModel.get().getCurrentUid())
|
||||
+ "&familyId=" + familyId;
|
||||
if (platform.getName().equals(GooglePlus.NAME)) {
|
||||
copyLink(siteUrl, emitter);
|
||||
return;
|
||||
}
|
||||
Platform.ShareParams sp = new Platform.ShareParams();
|
||||
sp.setText(XChatConstants.SHARE_FAMILY_TEXT);
|
||||
sp.setTitle(XChatConstants.SHARE_FAMILY_TITLE + "“" + title + "”");
|
||||
sp.setImageUrl(familyIcon);
|
||||
//QQ空间分享
|
||||
sp.setSite(XChatConstants.SHARE_FAMILY_TEXT);
|
||||
final String siteUrl = shareLink + "?shareUid=" + String.valueOf(AuthModel.get().getCurrentUid())
|
||||
+ "&familyId=" + familyId;
|
||||
sp.setSiteUrl(siteUrl);
|
||||
//QQ分享
|
||||
sp.setTitleUrl(siteUrl);
|
||||
@@ -274,14 +282,18 @@ public class ShareModel extends BaseModel implements IShareModel {
|
||||
public void subscribe(SingleEmitter<String> emitter) throws Exception {
|
||||
//无UI API
|
||||
final String shareLink = UriProvider.WEB_URL + XChatConstants.SHARE_TEAM_URL;
|
||||
final String siteUrl = shareLink + "?shareUid=" + String.valueOf(AuthModel.get().getCurrentUid())
|
||||
+ "&familyId=" + familyId;
|
||||
if (platform.getName().equals(GooglePlus.NAME)) {
|
||||
copyLink(siteUrl, emitter);
|
||||
return;
|
||||
}
|
||||
Platform.ShareParams sp = new Platform.ShareParams();
|
||||
sp.setText(XChatConstants.SHARE_TEAM_TEXT);
|
||||
sp.setTitle(XChatConstants.SHARE_TEAM_TITLE + "“" + title + "”");
|
||||
sp.setImageUrl(teamIcon);
|
||||
//QQ空间分享
|
||||
sp.setSite(XChatConstants.SHARE_TEAM_TEXT);
|
||||
final String siteUrl = shareLink + "?shareUid=" + String.valueOf(AuthModel.get().getCurrentUid())
|
||||
+ "&familyId=" + familyId;
|
||||
sp.setSiteUrl(siteUrl);
|
||||
//QQ分享
|
||||
sp.setTitleUrl(siteUrl);
|
||||
@@ -316,6 +328,10 @@ public class ShareModel extends BaseModel implements IShareModel {
|
||||
@Override
|
||||
public Single<String> shareText(Platform platform, String text) {
|
||||
return Single.create(emitter -> {
|
||||
if (platform.getName().equals(GooglePlus.NAME)) {
|
||||
copyLink(text, emitter);
|
||||
return;
|
||||
}
|
||||
Platform.ShareParams sp = new Platform.ShareParams();
|
||||
sp.setTitle("");
|
||||
sp.setText(text);
|
||||
@@ -376,6 +392,10 @@ public class ShareModel extends BaseModel implements IShareModel {
|
||||
}
|
||||
|
||||
public void shareImage(Platform platform, String url) {
|
||||
if (platform.getName().equals(GooglePlus.NAME)) {
|
||||
copyLink(url, null);
|
||||
return;
|
||||
}
|
||||
//无UI API
|
||||
final String shareLink = UriProvider.WEB_URL + XChatConstants.SHARE_TEAM_URL;
|
||||
Platform.ShareParams sp = new Platform.ShareParams();
|
||||
@@ -411,6 +431,10 @@ public class ShareModel extends BaseModel implements IShareModel {
|
||||
public Single<String> shareImageForSignIn(Platform platform, String url) {
|
||||
|
||||
return Single.create(emitter -> {
|
||||
if (platform.getName().equals(GooglePlus.NAME)) {
|
||||
copyLink(url, emitter);
|
||||
return;
|
||||
}
|
||||
Platform.ShareParams sp = new Platform.ShareParams();
|
||||
sp.setImageUrl(url);
|
||||
|
||||
@@ -442,19 +466,19 @@ public class ShareModel extends BaseModel implements IShareModel {
|
||||
public Single<String> shareCommon(Platform platform, ShareCommonInfo info, boolean toast) {
|
||||
|
||||
return Single.create((SingleOnSubscribe<String>) emitter -> {
|
||||
String siteUrl = info.getSiteUrl();
|
||||
if (platform.getName().equals(GooglePlus.NAME)) {
|
||||
copyLink(siteUrl, emitter);
|
||||
return;
|
||||
}
|
||||
Platform.ShareParams sp = new Platform.ShareParams();
|
||||
sp.setTitle(info.getTitle());
|
||||
sp.setText(info.getContent());
|
||||
sp.setImageUrl(info.getImageUrl());
|
||||
String siteUrl = info.getSiteUrl();
|
||||
//QQ空间分享
|
||||
sp.setSite(info.getTitle());
|
||||
sp.setSiteUrl(siteUrl);
|
||||
//QQ分享
|
||||
sp.setTitleUrl(siteUrl);
|
||||
//微信朋友圈分享
|
||||
sp.setUrl(siteUrl);
|
||||
sp.setShareType(Platform.SHARE_WEBPAGE);
|
||||
if (platform.getName().equals(Line.NAME)) {
|
||||
sp.setText(info.getContent() + "[" + siteUrl + "]");
|
||||
}
|
||||
platform.setPlatformActionListener(new PlatformActionListener() {
|
||||
@Override
|
||||
public void onComplete(Platform platform1, int i, HashMap<String, Object> hashMap) {
|
||||
@@ -463,7 +487,11 @@ public class ShareModel extends BaseModel implements IShareModel {
|
||||
|
||||
@Override
|
||||
public void onError(Platform platform1, int i, Throwable throwable) {
|
||||
emitter.onError(new Throwable(MSG.failed));
|
||||
String errorMsg = MSG.failed;
|
||||
if (throwable.getMessage().contains("not installed")) {
|
||||
errorMsg = ResUtil.getString(R.string.not_install_app);
|
||||
}
|
||||
emitter.onError(new Throwable(errorMsg));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -485,6 +513,21 @@ public class ShareModel extends BaseModel implements IShareModel {
|
||||
});
|
||||
}
|
||||
|
||||
private void copyLink(String url, SingleEmitter<String> emitter) {
|
||||
try {
|
||||
ClipboardManager cm = (ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE);
|
||||
cm.setPrimaryClip(ClipData.newPlainText("text", url));
|
||||
if (emitter != null) {
|
||||
emitter.onSuccess("已复制");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Logger.info("copyText", String.valueOf(e));
|
||||
if (emitter != null) {
|
||||
emitter.onError(new Throwable(String.valueOf(e)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private interface MSG {
|
||||
String success = "分享成功";
|
||||
String failed = "分享失败,请重试";
|
||||
|
@@ -16,6 +16,8 @@ public interface StatisticsProtocol {
|
||||
String EVENT_RECONNECTION_ROOM_CHAT = "String EVENT_reconnection_room_chat";//断网重连聊天室
|
||||
String USER_KICKED_EVENT = "user_kicked_String EVENT";//用户被踢
|
||||
|
||||
String EVENT_LOGIN_GOOGLE_CLICK = "login_google_click";
|
||||
String EVENT_LOGIN_LINE_CLICK = "login_line_click";
|
||||
String EVENT_LOGIN_QQ_CLICK = "login_qq_click";//点击qq登录
|
||||
String EVENT_LOGIN_WX_CLICK = "login_wx_click";//点击微信登录
|
||||
String EVENT_LOGIN_PHONE_CLICK = "login_phone_click";//点击手机号登录
|
||||
|
@@ -1,3 +1,8 @@
|
||||
<resources>
|
||||
<string name="app_name">core</string>
|
||||
<string name="core_auth_authmodel_06">未安装Line</string>
|
||||
<string name="core_auth_authmodel_09">未安装gmail</string>
|
||||
<string name="core_auth_authmodel_010">登录出错</string>
|
||||
<string name="core_auth_authmodel_011">取消登录</string>
|
||||
<string name="not_install_app">未安装该应用</string>
|
||||
</resources>
|
||||
|
@@ -5,6 +5,7 @@ import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.nnbc123.library.common.Constants;
|
||||
import com.nnbc123.library.utils.config.BasicConfig;
|
||||
import com.nnbc123.library.utils.log.MLog;
|
||||
|
||||
@@ -26,7 +27,7 @@ public class AppMetaDataUtil {
|
||||
*/
|
||||
public static String getChannelID() {
|
||||
String channelID = BasicConfig.INSTANCE.getChannel();
|
||||
channelID = TextUtils.isEmpty(channelID) ? "official" : channelID;
|
||||
channelID = TextUtils.isEmpty(channelID) ? Constants.CHANNEL_DEF : channelID;
|
||||
return channelID;
|
||||
}
|
||||
|
||||
|
@@ -0,0 +1,41 @@
|
||||
package com.nnbc123.library.utils;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
|
||||
import com.orhanobut.logger.Logger;
|
||||
|
||||
/**
|
||||
* 设备信息工具类
|
||||
*/
|
||||
public class DeviceUtils {
|
||||
private static final String TAG = "DeviceUtils";
|
||||
|
||||
/**
|
||||
* 检查指定包名的APP是否已安装了
|
||||
*
|
||||
* @param context 上下文对象
|
||||
* @param packageName 包名
|
||||
* @return 是否有安装指定包名的APP,true代表已安装,false代表未安装
|
||||
*/
|
||||
public static boolean isAppInstalled(Context context, String packageName) {
|
||||
if (context == null) {
|
||||
return false;
|
||||
} else {
|
||||
boolean installed = false;
|
||||
try {
|
||||
PackageManager pm = context.getPackageManager();
|
||||
ApplicationInfo info = pm.getApplicationInfo(packageName, 0);
|
||||
if (info != null) {
|
||||
installed = true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Logger.i("isAppInstalled packageName=" + packageName + " "+ e);
|
||||
}
|
||||
return installed;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -2,6 +2,8 @@ package com.nnbc123.library.common;
|
||||
|
||||
public class Constants {
|
||||
|
||||
public static final String CHANNEL_DEF = "official";
|
||||
public static final String CHANNEL_GOOGLE = "google";
|
||||
//上传的图片 默认大小不能超过大小 640KB
|
||||
public static final int UPLOAD_IMAGE_MAX_FILE_LENGTH = 640;
|
||||
//上传的图片 默认宽高最大值 2340
|
||||
|
@@ -2,4 +2,8 @@ package com.nnbc123.library.common
|
||||
|
||||
object SpConstants {
|
||||
const val ORDER_RECORD = "order_record"
|
||||
const val LOGIN_TYPE = "login_type"
|
||||
const val GOOGLE = "google"
|
||||
const val FACEBOOK = "facebook"
|
||||
const val LINE = "line"
|
||||
}
|
34
mob.gradle
34
mob.gradle
@@ -12,31 +12,27 @@ MobSDK {
|
||||
//平台配置信息
|
||||
gui false
|
||||
devInfo {
|
||||
Wechat {
|
||||
appId "wx4b772d5ebc964a38"
|
||||
appSecret "f045979c311e13725cbb9aa87c265668"
|
||||
}
|
||||
WechatMoments {
|
||||
appId "wx4b772d5ebc964a38"
|
||||
appSecret "f045979c311e13725cbb9aa87c265668"
|
||||
}
|
||||
QQ {
|
||||
appId "102044928"
|
||||
appKey "12u585rSsAHEzc4K"
|
||||
shareByAppClient true
|
||||
}
|
||||
QZone {
|
||||
appId "102044928"
|
||||
appKey "12u585rSsAHEzc4K"
|
||||
shareByAppClient true
|
||||
GooglePlus {
|
||||
appId "-.apps.googleusercontent.com"
|
||||
callbackUri "http://localhost"
|
||||
officialVersion "default"
|
||||
enable true
|
||||
}
|
||||
|
||||
Line {
|
||||
appId "16529"
|
||||
appSecret "903d01"
|
||||
enable true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
permissions {
|
||||
exclude "android.permission.READ_PHONE_STATE", "android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_COARSE_LOCATION", "android.permission.QUERY_ALL_PACKAGES"
|
||||
}
|
||||
exclude "android.permission.READ_PHONE_STATE", "android.permission.ACCESS_FINE_LOCATION",
|
||||
"android.permission.ACCESS_COARSE_LOCATION", "android.permission.QUERY_ALL_PACKAGES",
|
||||
"android.permission.GET_ACCOUNTS", "android.permission.ACCESS_WIFI_STATE",
|
||||
"android.permission.READ_SMS", "android.permission.RECEIVE_SMS",
|
||||
"android.permission.READ_CONTACTS"}
|
||||
|
||||
}
|
||||
|
||||
|
@@ -1,7 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<DevInfor>
|
||||
<Wechat AppId="wx4b772d5ebc964a38" AppSecret="f045979c311e13725cbb9aa87c265668" />
|
||||
<WechatMoments AppId="wx4b772d5ebc964a38" AppSecret="f045979c311e13725cbb9aa87c265668" />
|
||||
<QQ AppId="102044928" AppKey="12u585rSsAHEzc4K" ShareByAppClient="true" />
|
||||
<QZone AppId="102044928" AppKey="12u585rSsAHEzc4K" ShareByAppClient="true" />
|
||||
<GooglePlus Enable="true" OfficialVersion="default" ClientID="-.apps.googleusercontent.com" RedirectUrl="http://localhost" />
|
||||
<Line Enable="true" ChannelID="16529" ChannelSecret="903d01" RedirectUri="null" />
|
||||
</DevInfor>
|
Reference in New Issue
Block a user