Merge 友盟SDK升级 into yinyou_develop

This commit is contained in:
zu
2021-06-09 14:04:57 +08:00
28 changed files with 302 additions and 326 deletions

View File

@@ -183,6 +183,10 @@ android {
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
productFlavors {
accompany {
dimension 'default'
@@ -202,9 +206,7 @@ dependencies {
api 'androidx.multidex:multidex:2.0.1'
debugApi "com.squareup.leakcanary:leakcanary-android:1.6.3"
releaseApi "com.squareup.leakcanary:leakcanary-android-no-op:1.6.3"
stagingApi "com.squareup.leakcanary:leakcanary-android-no-op:1.6.3"
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7'
api "com.orhanobut:dialogplus:1.11@aar"

View File

@@ -386,3 +386,59 @@
-keep class com.yuxiaor.flutter.g_faraday.** { *; }
-keep class net.sqlcipher.** { *; }
# Alipay
-keep class com.alipay.android.app.IAlixPay{*;}
-keep class com.alipay.android.app.IAlixPay$Stub{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;}
-keep class com.alipay.sdk.app.PayTask{ public *;}
-keep class com.alipay.sdk.app.AuthTask{ public *;}
-keep class com.alipay.sdk.app.H5PayCallback {
<fields>;
<methods>;
}
-dontwarn android.net.**
-keep class android.net.SSLCertificateSocketFactory{*;}
-keep class com.alipay.android.phone.mrpc.core.** { *; }
-keep class com.alipay.apmobilesecuritysdk.** { *; }
-keep class com.alipay.mobile.framework.service.annotation.** { *; }
-keep class com.alipay.mobilesecuritysdk.face.** { *; }
-keep class com.alipay.tscenter.biz.rpc.** { *; }
-keep class org.json.alipay.** { *; }
-keep class com.alipay.tscenter.** { *; }
-keep class com.ta.utdid2.** { *;}
-keep class com.ut.device.** { *;}
# umeng-app
-dontwarn com.umeng.**
-keep class com.umeng.**
-keep class com.umeng.** {*;}
-keepclassmembers class * {
public <init> (org.json.JSONObject);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
#腾讯崩溃收集
-dontwarn com.tencent.bugly.**
-keep public class com.tencent.bugly.**{*;}
# 易盾
-keep class com.netease.mobsec.**{*;}
# linkedme
-keep class com.microquation.linkedme.android.** { *; }
# 数美天网
-keep class com.ishumei.dfp.SMSDK { *; }
-dontwarn com.alibaba.**
-dontwarn com.taobao.**
-dontwarn com.google.**
-dontwarn edu.umd.cs.**
-dontwarn org.apache.**
-dontwarn com.amap.**

View File

@@ -15,7 +15,6 @@
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> -->
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> <!-- 手机状态 -->
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" /> <!-- 控制呼吸灯,振动器等,用于新消息提醒 -->
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<!-- Required -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />

View File

@@ -20,11 +20,9 @@ import androidx.multidex.MultiDex;
import com.alibaba.security.biometrics.activity.ALBiometricsActivity;
import com.alibaba.security.biometrics.activity.ALBiometricsDialogActivity;
import com.alibaba.security.biometrics.activity.BaseBioNavigatorActivity;
import com.alibaba.security.realidentity.RPVerify;
import com.alibaba.security.realidentity.activity.RPTakePhotoActivity;
import com.alibaba.security.realidentity.activity.RPWebViewActivity;
import com.baidu.mobstat.StatService;
import com.bumptech.glide.request.target.ViewTarget;
import com.coorchice.library.utils.LogUtils;
import com.huawei.hms.support.common.ActivityMgr;
@@ -54,19 +52,14 @@ import com.scwang.smartrefresh.header.MaterialHeader;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
import com.soundcloud.android.crop.CropImageActivity;
import com.squareup.leakcanary.LeakCanary;
import com.squareup.leakcanary.RefWatcher;
import com.tencent.bugly.Bugly;
import com.tencent.bugly.beta.Beta;
import com.tencent.bugly.crashreport.CrashReport;
import com.umeng.analytics.MobclickAgent;
import com.umeng.commonsdk.UMConfigure;
import com.yizhuan.erban.BuildConfig;
import com.yizhuan.erban.MainActivity;
import com.yizhuan.erban.MiddleActivity;
import com.yizhuan.erban.NimMiddleActivity;
import com.yizhuan.erban.R;
import com.yizhuan.erban.flutter.ChannelConstants;
import com.yizhuan.erban.flutter.XplanFlutterBoostCallback;
import com.yizhuan.erban.flutter.XplanFlutterBoostDelegate;
import com.yizhuan.erban.module_hall.HallDataManager;
@@ -119,14 +112,10 @@ import java.io.IOException;
import java.util.Map;
import java.util.Objects;
import io.flutter.plugin.common.MethodChannel;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.plugins.RxJavaPlugins;
import io.reactivex.schedulers.Schedulers;
import io.realm.Realm;
import io.realm.RealmConfiguration;
import me.jessyan.autosize.AutoSizeConfig;
import me.jessyan.autosize.external.ExternalAdaptManager;
import static com.yizhuan.xchat_android_constants.XChatConstants.HW_APP_ID;
import static com.yizhuan.xchat_android_constants.XChatConstants.HW_CERTIFICATE_NAME;
@@ -151,19 +140,9 @@ import static com.yizhuan.xchat_android_core.im.custom.bean.CustomAttachment.CUS
public class XChatApplication extends Application {
public static final String TAG = "XChatApplication";
private static XChatApplication instance;
private RefWatcher mRefWatcher;
private static String oaid;
private static boolean isSupportOaid = false;
private static int errorCode;
public static String getOaid() {
return oaid;
}
// public static String getErrorCode() {
// return String.valueOf(errorCode);
// }
public static boolean isSupportOaid() {
return isSupportOaid;
}
@@ -174,7 +153,6 @@ public class XChatApplication extends Application {
public static void setIsSupportOaid(boolean isSupportOaid, int ErrorCode) {
XChatApplication.isSupportOaid = isSupportOaid;
XChatApplication.errorCode = ErrorCode;
}
public static XChatApplication instance() {
@@ -338,13 +316,7 @@ public class XChatApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
// you must install multiDex whatever tinker is installed!
MultiDex.install(base);
// try{
// JLibrary.InitEntry(base);
// }catch (Exception e){
//
// }
}
@@ -716,8 +688,6 @@ public class XChatApplication extends Application {
initRxNet(BasicConfig.INSTANCE.getAppContext(), UriProvider.JAVA_WEB_URL);
//内存泄漏监控
setupLeakCanary();
ConnectiveChangedReceiver.getInstance().init(this.getApplicationContext());
/**
* 使用到realm 数据库,这里配置数据库 这里必须先于模块初始化前进行初始化配置
@@ -731,8 +701,6 @@ public class XChatApplication extends Application {
LogUtil.i(TAG, channel);
// initBaiduStatistic(channel); 百度统计
initUmengAppStatistic(channel);
//APP启动埋点
StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_APP_LAUNCH, "应用启动");
@@ -782,29 +750,6 @@ public class XChatApplication extends Application {
}
private void initBaiduStatistic(String channel) {
// 百度统计初始化
StatService.setAppKey(Constants.BAIDU_APPKEY);
StatService.setAppChannel(this.getApplicationContext(), channel, true);
StatService.setOn(this.getApplicationContext(), StatService.EXCEPTION_LOG);
StatService.setSessionTimeOut(30);
StatService.setDebugOn(isDebug());
}
private void initUmengAppStatistic(String channel) {
// 友盟统计初始化
UMConfigure.init(this.getApplicationContext(), XChatConstants.UMENG_APP_KEY,
channel, UMConfigure.DEVICE_TYPE_PHONE, null);
// 选用MANUAL页面采集模式
MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.MANUAL);
// 支持在子进程中统计自定义事件
UMConfigure.setProcessEvent(true);
// 日志加密
UMConfigure.setEncryptEnabled(true);
// 集成测试
UMConfigure.setLogEnabled(isRealDebug());
}
private void initNimUIKit() {
// 初始化
NimUIKit.init(this);
@@ -826,18 +771,6 @@ public class XChatApplication extends Application {
}
}
private void setupLeakCanary() {
if (!BasicConfig.INSTANCE.isDebuggable()) {
return;
}
if (LeakCanary.isInAnalyzerProcess(this)) {
// This process is dedicated to LeakCanary for heap analysis.
// You should not init your app in this process.
return;
}
// enabledStrictMode();
mRefWatcher = LeakCanary.install(this);
}
private static void enabledStrictMode() {
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
@@ -862,10 +795,6 @@ public class XChatApplication extends Application {
);
}
public static RefWatcher getRefWatcher(Context context) {
return instance().mRefWatcher;
}
/**
* debug 环境 受到实验室模式影响
*/

View File

@@ -347,9 +347,6 @@ public abstract class BaseActivity extends RxAppCompatActivity
/* ImageLoadUtils.clearMemory(this);*/
if (XChatApplication.isDebug()) {
XChatApplication.getRefWatcher(this).watch(this);
}
}
@Override

View File

@@ -150,9 +150,6 @@ public abstract class BaseFragment extends RxFragment implements KeyEvent.Callba
@Override
public void onDestroy() {
super.onDestroy();
if (BasicConfig.INSTANCE.isDebuggable()) {
XChatApplication.getRefWatcher(getActivity()).watch(this);
}
}
public int getRootLayoutId() {

View File

@@ -10,6 +10,7 @@ import android.text.TextUtils;
import android.text.method.LinkMovementMethod;
import android.text.style.ForegroundColorSpan;
import android.view.View;
import android.widget.CheckBox;
import android.widget.TextView;
import androidx.annotation.NonNull;
@@ -32,7 +33,7 @@ import io.reactivex.functions.BiConsumer;
public abstract class BaseLoginAct extends BaseActivity {
protected TextView tvProtocol;
protected CheckBox tvProtocol;
protected TextView wxLogin;
protected TextView qqLogin;
protected TextView tvLoginQuickPass;

View File

@@ -14,8 +14,12 @@ import com.bumptech.glide.request.RequestOptions;
import com.idlefish.flutterboost.FlutterBoost;
import com.idlefish.flutterboost.containers.FlutterBoostFragment;
import com.microquation.linkedme.android.LinkedME;
import com.mob.MobSDK;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.support.glide.GlideApp;
import com.umeng.analytics.MobclickAgent;
import com.umeng.commonsdk.UMConfigure;
import com.yizhuan.erban.BuildConfig;
import com.yizhuan.erban.MainActivity;
import com.yizhuan.erban.NimMiddleActivity;
import com.yizhuan.erban.R;
@@ -24,9 +28,11 @@ import com.yizhuan.erban.databinding.ActivitySplashBinding;
import com.yizhuan.erban.flutter.RouterConstants;
import com.yizhuan.erban.other.SplashBitmapTransformation;
import com.yizhuan.erban.other.dialog.PrivacyAgreementDialog;
import com.yizhuan.xchat_android_constants.XChatConstants;
import com.yizhuan.xchat_android_core.initial.InitialModel;
import com.yizhuan.xchat_android_core.initial.SplashComponent;
import com.yizhuan.xchat_android_core.utils.SharedPreferenceUtils;
import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
/**
* @author xiaoyu
@@ -44,7 +50,6 @@ public class SplashActivity extends BaseActivity implements View.OnClickListener
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
NimMiddleActivity.delayOpenCommunity = true;
LinkedME.getInstance().setImmediate(true);
//修复 https://blog.csdn.net/u011153817/article/details/77335255
// https://blog.csdn.net/zhangcanyan/article/details/52777265 这样的启动异常问题.
if (!isTaskRoot()) {
@@ -100,10 +105,28 @@ public class SplashActivity extends BaseActivity implements View.OnClickListener
privacyAgreementDialog.setOnCallBack(this);
privacyAgreementDialog.show();
} else {
initOtherSDK(BasicConfig.INSTANCE.getChannel());
showSplash();
}
}
private void initOtherSDK(String channel) {
LinkedME.getInstance().setImmediate(true);
MobSDK.submitPolicyGrantResult(true, null);
// 友盟统计初始化
UMConfigure.init(this.getApplicationContext(), XChatConstants.UMENG_APP_KEY,
channel, UMConfigure.DEVICE_TYPE_PHONE, null);
// 选用MANUAL页面采集模式
MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.MANUAL);
// 支持在子进程中统计自定义事件
UMConfigure.setProcessEvent(true);
// 日志加密
UMConfigure.setEncryptEnabled(true);
// 集成测试
UMConfigure.setLogEnabled(BuildConfig.DEBUG);
}
private void showSplash() {
// 不过期的,并且已经下载出来图片的闪屏页数据
@@ -192,6 +215,7 @@ public class SplashActivity extends BaseActivity implements View.OnClickListener
public void onFinish(boolean isConfirm) {
if (isConfirm) {
SharedPreferenceUtils.put(SHOW_PRIVACY_AGREEMENT, false);
initOtherSDK(BasicConfig.INSTANCE.getChannel());
showSplash();
} else {
onBackPressed();

View File

@@ -41,6 +41,7 @@ public class PrivacyAgreementDialog extends Dialog implements View.OnClickListen
setContentView(R.layout.dialog_privacy_agreement);
findViewById(R.id.tv_confirm).setOnClickListener(this);
findViewById(R.id.btn_cancel).setOnClickListener(this);
TextView tvDesc = findViewById(R.id.tv_desc);
String privacyAgreementTip = getContext().getString(R.string.tip_privacy_agreement);

View File

@@ -1,95 +0,0 @@
package com.yizhuan.erban.utils;
import android.content.Context;
import android.util.Log;
import androidx.annotation.NonNull;
import com.bun.miitmdid.core.ErrorCode;
import com.bun.miitmdid.core.MdidSdkHelper;
import com.bun.supplier.IIdentifierListener;
import com.bun.supplier.IdSupplier;
import com.yizhuan.erban.application.XChatApplication;
/**
* Created by zheng on 2019/8/22.
*/
public class MiitHelper implements IIdentifierListener {
private AppIdsUpdater _listener;
public MiitHelper(AppIdsUpdater callback) {
_listener = callback;
}
public void getDeviceIds(Context cxt) {
long timeb = System.currentTimeMillis();
int nres = CallFromReflect(cxt);
// int nres=DirectCall(cxt);
long timee = System.currentTimeMillis();
long offset = timee - timeb;
if (nres == ErrorCode.INIT_ERROR_DEVICE_NOSUPPORT) {//1008612 不支持的设备
XChatApplication.setIsSupportOaid(false, nres);
} else if (nres == ErrorCode.INIT_ERROR_LOAD_CONFIGFILE) {//1008613 加载配置文件出错
XChatApplication.setIsSupportOaid(false, nres);
} else if (nres == ErrorCode.INIT_ERROR_MANUFACTURER_NOSUPPORT) {//1008611 不支持的设备厂商
XChatApplication.setIsSupportOaid(false, nres);
} else if (nres == ErrorCode.INIT_ERROR_RESULT_DELAY) {//1008614 获取接口是异步的,结果会在回调中返回,回调执行的回调可能在工作线程
//TODO 这种情况还不清楚怎么解决呢。暂且先返false
XChatApplication.setIsSupportOaid(false, nres);
} else if (nres == ErrorCode.INIT_HELPER_CALL_ERROR) {//1008615 反射调用出错
XChatApplication.setIsSupportOaid(false, nres);
}
Log.d(getClass().getSimpleName(), "return value: " + String.valueOf(nres));
}
/*
* 通过反射调用解决android 9以后的类加载升级导至找不到so中的方法
*
* */
private int CallFromReflect(Context cxt) {
return MdidSdkHelper.InitSdk(cxt, true, this);
}
/*
* 直接java调用如果这样调用在android 9以前没有题在android 9以后会抛找不到so方法的异常
* 解决办法是和JLibrary.InitEntry(cxt)分开调用比如在A类中调用JLibrary.InitEntry(cxt)在B类中调用MdidSdk的方法
* A和B不能存在直接和间接依赖关系否则也会报错
*
* */
// private int DirectCall(Context cxt) {
// MdidSdk sdk = new MdidSdk();
// return sdk.InitSdk(cxt, this);
// }
@Override
public void OnSupport(boolean isSupport, IdSupplier _supplier) {
if(_supplier==null) {
return;
}
try {
String oaid=_supplier.getOAID();
String vaid=_supplier.getVAID();
String aaid=_supplier.getAAID();
StringBuilder builder=new StringBuilder();
// builder.append("support: ").append(isSupport?"true":"false").append("\n");
// builder.append("OAID: ").append(oaid).append("\n");
// builder.append("VAID: ").append(vaid).append("\n");
// builder.append("AAID: ").append(aaid).append("\n");
if(_listener!=null){
_listener.OnIdsAvalid(oaid);
}
}catch (Exception e) {
e.printStackTrace();
}
}
public interface AppIdsUpdater {
void OnIdsAvalid(@NonNull String ids);
}
}

View File

@@ -1,36 +0,0 @@
package com.yizhuan.erban.utils;
import com.yizhuan.erban.application.XChatApplication;
/**
* @author: hgb
* @createTime: 2019/9/27
* @description:
* @changed by:
*/
public class OAIDUtil {
/**
* 获取唯一标识idfa
*
* @return
*/
/**
* 获取Oaid
*
* @return oaid或错误码
*/
public static String getOaid() {
String idfa;
if (XChatApplication.isSupportOaid()) {
idfa = XChatApplication.getOaid();
} else {
idfa = null;
// idfa = "获取失败ErrorCode: " + XChatApplication.getErrorCode();
}
return idfa;
}
}

View File

@@ -25,7 +25,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="音游私政策"
android:text="音游私政策"
android:textColor="#ff1b1b1b"
android:textSize="18sp"
android:textStyle="bold" />
@@ -62,7 +62,6 @@
android:layout_height="36dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:background="@drawable/common_btn_bg"
android:gravity="center"
android:minHeight="50dp"
@@ -70,4 +69,16 @@
android:textColor="@color/white"
android:textSize="16sp" />
<TextView
android:id="@+id/btn_cancel"
android:layout_width="105dp"
android:layout_height="20dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="20dp"
android:gravity="center"
android:text="不同意"
android:textColor="@color/color_333333"
android:textSize="15sp" />
</LinearLayout>

View File

@@ -20,8 +20,9 @@
<string name="hint_login_password_2">请输入密码</string>
<string name="text_login_to_register">立即注册</string>
<string name="text_login_forget_password">忘记密码</string>
<string name="text_login_protocol">登录即代表您同意%s与%s</string>
<string name="text_login_protocol">同意%s与%s</string>
<string name="text_login_protocol_2">注册即代表同意 %s</string>
<string name="text_login_protocol_3">阅读并同意%s与\n%s方可登录</string>
<string name="text_how_to_set_pwd">未设置兔兔密码的用户记得前往\n兔兔设置密码哦 %s</string>
<string name="text_bind_and_login">登录并绑定</string>
<string name="text_reset_password_now">立即重置</string>

View File

@@ -0,0 +1,88 @@
package com.yizhuan.erban.quick_pass;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.style.ForegroundColorSpan;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseDialog;
import com.yizhuan.erban.common.widget.OriginalDrawStatusClickSpan;
import com.yizhuan.erban.databinding.DialogProtocolBinding;
import com.yizhuan.erban.ui.webview.CommonWebViewActivity;
import com.yizhuan.xchat_android_core.UriProvider;
public class ProtocolDialog extends BaseDialog<DialogProtocolBinding> {
public static ProtocolDialog newInstance() {
return new ProtocolDialog();
}
private View.OnClickListener onClickListener;
public void setOnClickListener(View.OnClickListener onClickListener) {
this.onClickListener = onClickListener;
}
@Override
public void init() {
setProtocol();
getBinding().btnCancel.setOnClickListener(v -> {
if (onClickListener != null){
onClickListener.onClick(v);
}
dismissAllowingStateLoss();
});
getBinding().btnOk.setOnClickListener(v -> {
if (onClickListener != null){
onClickListener.onClick(v);
}
dismissAllowingStateLoss();
});
}
protected void setProtocol() {
Context context = requireContext();
String privacyAgreementTip = context.getString(R.string.tip_privacy_agreement);
String userAgreementTip = context.getString(R.string.tip_user_agreement);
String privacyAgreementDescTip = context.getString(R.string.text_login_protocol_3, privacyAgreementTip, userAgreementTip);
SpannableString ss = new SpannableString(privacyAgreementDescTip);
int privacyAgreementTipIndex = privacyAgreementDescTip.indexOf(privacyAgreementTip);
int userAgreementTipIndex = privacyAgreementDescTip.indexOf(userAgreementTip);
ss.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.appColor)), privacyAgreementTipIndex, privacyAgreementTipIndex + privacyAgreementTip.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
ss.setSpan(new OriginalDrawStatusClickSpan(ContextCompat.getColor(context, R.color.appColor)) {
@Override
public void onClick(@NonNull View widget) {
if (widget instanceof TextView)
((TextView) widget).setHighlightColor(getResources().getColor(android.R.color.transparent));
CommonWebViewActivity.start(context, UriProvider.getPrivacyAgreement());
}
}, privacyAgreementTipIndex, privacyAgreementTipIndex + privacyAgreementTip.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
ss.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, R.color.appColor)), userAgreementTipIndex, userAgreementTipIndex + userAgreementTip.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
ss.setSpan(new OriginalDrawStatusClickSpan(ContextCompat.getColor(context, R.color.appColor)) {
@Override
public void onClick(@NonNull View widget) {
if (widget instanceof TextView)
((TextView) widget).setHighlightColor(getResources().getColor(android.R.color.transparent));
CommonWebViewActivity.start(context, UriProvider.getUserProtocolUrl());
}
}, userAgreementTipIndex, userAgreementTipIndex + privacyAgreementTip.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
getBinding().tvProtocol.setText(ss);
getBinding().tvProtocol.setHighlightColor(Color.TRANSPARENT);
getBinding().tvProtocol.setMovementMethod(new LinkMovementMethod());
}
}

View File

@@ -127,6 +127,17 @@ public class QuickPassLoginAct extends BaseLoginAct implements View.OnClickListe
@Override
public void onClick(View v) {
if (!tvProtocol.isChecked()) {
ProtocolDialog protocolDialog = ProtocolDialog.newInstance();
protocolDialog.setOnClickListener(view -> {
if (view.getId() == R.id.btn_ok) {
tvProtocol.setChecked(true);
v.callOnClick();
}
});
protocolDialog.show(this);
return;
}
switch (v.getId()) {
case R.id.img_wx_login:
wxLogin();
@@ -141,14 +152,10 @@ public class QuickPassLoginAct extends BaseLoginAct implements View.OnClickListe
StatisticsProtocol.Event.EVENT_ONE_CLICK_LOGIN, "一键登录");
preFetchMobileNum();
break;
case R.id.img_phone_login:
// phoneLogin.setEnabled(false);
StatisticManager.Instance().onEvent(
StatisticsProtocol.Event.EVENT_ONE_CLICK_LOGIN_CHANGE_ID, "一键登录-切换账号");
// getDialogManager().showProgressDialog(QuickPassLoginAct.this);
LoginPhoneActivity.start(QuickPassLoginAct.this);
break;
}
@@ -335,4 +342,13 @@ public class QuickPassLoginAct extends BaseLoginAct implements View.OnClickListe
}
private boolean checkProtocol() {
if (!tvProtocol.isChecked()) {
}
return false;
}
}

View File

@@ -61,15 +61,18 @@
app:layout_constraintStart_toStartOf="parent"
tools:ignore="SpUsage" />
<TextView
<CheckBox
android:id="@+id/tv_protocol"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="@dimen/dp_15"
android:button="@null"
android:drawableStart="@drawable/selector_radio_btn"
android:text="@string/text_login_protocol"
android:textColor="@color/color_999999"
android:textColor="#FFBBB1FF"
android:textSize="@dimen/dp_12"
android:drawablePadding="@dimen/dp_5"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -142,4 +145,4 @@
app:layout_constraintStart_toStartOf="parent"
tools:text="遇到问题点击这里" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,70 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
</data>
<LinearLayout xmlns:tools="http://schemas.android.com/tools"
android:layout_width="295dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:background="@drawable/shape_white_corner_8dp"
android:orientation="vertical"
tools:background="@color/black_transparent_10">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginStart="39dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="39dp"
android:layout_marginBottom="@dimen/dp_14"
android:singleLine="true"
android:text="提示"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp_16"
android:textStyle="bold"
tools:visibility="visible" />
<TextView
android:id="@+id/tv_protocol"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginStart="39dp"
android:layout_marginEnd="39dp"
android:layout_marginBottom="@dimen/dp_20"
android:layout_weight="1"
android:gravity="center_horizontal"
android:text="阅读并同意《隐私政策》与《用户协议》方可登录"
android:textColor="@color/color_333333"
android:textSize="13sp" />
<TextView
android:id="@+id/btn_ok"
android:layout_width="150dp"
android:layout_height="38dp"
android:layout_gravity="center_horizontal"
android:background="@drawable/bg_common_confirm"
android:gravity="center"
android:text="同意"
android:textColor="@color/white"
android:textSize="15sp" />
<TextView
android:id="@+id/btn_cancel"
android:layout_width="105dp"
android:layout_height="20dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="20dp"
android:gravity="center"
android:text="暂不使用"
android:textColor="@color/color_333333"
android:textSize="15sp" />
</LinearLayout>
</layout>

View File

@@ -12,8 +12,11 @@ buildscript {
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://jitpack.io' }
google()
jcenter()
mavenCentral()
maven {url 'http://developer.huawei.com/repo/'}
maven { url "http://mvn.mob.com/android" }
maven { url 'https://repo1.maven.org/maven2/' }
maven { url 'https://dl.bintray.com/linkedme2016/lkme-deeplinks' }
}
dependencies {
@@ -31,12 +34,11 @@ buildscript {
allprojects {
repositories {
google()
jcenter()
mavenCentral()
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://jitpack.io' }
maven { url "http://mvn.mob.com/android" }
maven { url 'https://dl.bintray.com/umsdk/release' }
maven { url 'https://repo1.maven.org/maven2/' }
maven { url 'https://dl.bintray.com/linkedme2016/lkme-deeplinks' }
maven { url 'http://developer.huawei.com/repo/' }
}

View File

@@ -63,29 +63,19 @@ android {
}
def link_page = "1.1.16"
def loggerVersion = "2.2.0"
def BaiduMtjVersion = "3.8.2.1"
def Lombok = "1.16.20"
def umeng_common = "2.2.5"
def umeng_analytics = "8.1.6"
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
api fileTree(dir: 'libs', include: ['*.jar'])
testImplementation 'junit:junit:4.13.1'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
api "cc.linkedme.deeplinks:link-page:${link_page}"
api "com.orhanobut:logger:${loggerVersion}"
// 百度统计
api "com.baidu.mobstat:mtj-sdk:${BaiduMtjVersion}"
// 友盟统计
api "com.umeng.umsdk:analytics:${umeng_analytics}"
api "com.umeng.umsdk:common:${umeng_common}"
api 'com.umeng.umsdk:common:9.3.8'// 必选
api 'com.umeng.umsdk:asms:1.2.2'// 必选
compileOnly "org.projectlombok:lombok:${Lombok}"
annotationProcessor "org.projectlombok:lombok:${Lombok}"

View File

@@ -19,70 +19,3 @@
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
# Alipay
-keep class com.alipay.android.app.IAlixPay{*;}
-keep class com.alipay.android.app.IAlixPay$Stub{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback{*;}
-keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;}
-keep class com.alipay.sdk.app.PayTask{ public *;}
-keep class com.alipay.sdk.app.AuthTask{ public *;}
-keep class com.alipay.sdk.app.H5PayCallback {
<fields>;
<methods>;
}
-dontwarn android.net.**
-keep class android.net.SSLCertificateSocketFactory{*;}
-keep class com.alipay.android.phone.mrpc.core.** { *; }
-keep class com.alipay.apmobilesecuritysdk.** { *; }
-keep class com.alipay.mobile.framework.service.annotation.** { *; }
-keep class com.alipay.mobilesecuritysdk.face.** { *; }
-keep class com.alipay.tscenter.biz.rpc.** { *; }
-keep class org.json.alipay.** { *; }
-keep class com.alipay.tscenter.** { *; }
-keep class com.ta.utdid2.** { *;}
-keep class com.ut.device.** { *;}
# umeng-app
-dontwarn com.umeng.**
-keep class com.umeng.**
-keep class com.umeng.** {*;}
-keepclassmembers class * {
public <init> (org.json.JSONObject);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
#腾讯崩溃收集
-dontwarn com.tencent.bugly.**
-keep public class com.tencent.bugly.**{*;}
# 易盾
-keep class com.netease.mobsec.**{*;}
# linkedme
-keep class com.microquation.linkedme.android.** { *; }
# 数美天网
-keep class com.ishumei.dfp.SMSDK { *; }
# shareSdk
-keep class cn.sharesdk.**
-keep class com.mob.**
-keep class cn.sharesdk.**{*;}
-keep class com.sina.**{*;}
-keep class **.R$* {*;}
-keep class **.R{*;}
-keep class com.mob.**{*;}
-dontwarn com.mob.**
-dontwarn cn.sharesdk.**
-dontwarn **.R$*
-dontwarn com.alibaba.**
-dontwarn com.taobao.**
-dontwarn com.google.**
-dontwarn edu.umd.cs.**
-dontwarn org.apache.**
-dontwarn com.amap.**

Binary file not shown.

Binary file not shown.

View File

@@ -155,12 +155,12 @@ public class XChatConstants {
/**
* 分享房间文本
*/
public static final String SHARE_ROOM_TEXT = "带你走进Ta的房间——";
public static final String SHARE_ROOM_TEXT = "免费报名,奖金高,比赛多";
/**
* 分享房间标题
*/
public static final String SHARE_ROOM_TITLE = "听声音玩游戏交朋友,来音游";
public static final String SHARE_ROOM_TITLE = "玩和平精英赢奖金";
/**
* 分享房间 URL

View File

@@ -155,7 +155,7 @@ public class ShareModel extends BaseModel implements IShareModel {
//无UI API
if (userInfo != null && platform != null) {
Platform.ShareParams sp = new Platform.ShareParams();
sp.setText(userInfo.getNick() + XChatConstants.SHARE_ROOM_TEXT + title);
sp.setText(XChatConstants.SHARE_ROOM_TEXT);
sp.setTitle(XChatConstants.SHARE_ROOM_TITLE);
sp.setImageUrl(userInfo.getAvatar());
final String siteUrl = UriProvider.IM_SERVER_URL + XChatConstants.SHARE_ROOM_URL +
@@ -165,7 +165,7 @@ public class ShareModel extends BaseModel implements IShareModel {
URLEncoder.encode( UserModel.get().getCacheLoginUserInfo().getNick(), "utf8");
//QQ空间分享
sp.setSite(userInfo.getNick() + XChatConstants.SHARE_ROOM_TEXT + title);
sp.setSite(XChatConstants.SHARE_ROOM_TEXT);
sp.setSiteUrl(siteUrl);
//QQ分享
sp.setTitleUrl(siteUrl);

View File

@@ -1,9 +1,9 @@
package com.yizhuan.xchat_android_core.statistic;
import android.content.Context;
import androidx.annotation.Keep;
import com.baidu.mobstat.StatService;
import com.umeng.analytics.MobclickAgent;
import java.util.Map;
@@ -18,37 +18,26 @@ import java.util.Map;
public class StatisticModel {
void onEventEnd(Context context, String eventId, String eventLabel, Map<String, String> arguments) {
if (arguments == null) {
StatService.onEventEnd(context, eventId, eventLabel);
MobclickAgent.onPageEnd(eventId);
} else {
StatService.onEventEnd(context, eventId, eventLabel, arguments);
MobclickAgent.onPageEnd(eventId);
}
MobclickAgent.onPageEnd(eventId);
}
void onEventStart(Context context, String eventId, String eventLabel) {
StatService.onEventStart(context, eventId, eventLabel);
MobclickAgent.onPageStart(eventId);
}
void onEvent(Context context, String eventId, String eventLabel, Map<String, String> arguments) {
if (arguments != null) {
StatService.onEvent(context, eventId, eventLabel, 1, arguments);
MobclickAgent.onEvent(context, eventId, arguments);
} else {
StatService.onEvent(context, eventId, eventLabel);
MobclickAgent.onEvent(context, eventId, eventLabel);
}
}
void onResume(Context context) {
StatService.onResume(context);
MobclickAgent.onResume(context);
}
void onPause(Context context) {
StatService.onPause(context);
MobclickAgent.onPause(context);
}
@@ -59,7 +48,6 @@ public class StatisticModel {
* @param pageName 页面名称
*/
void onPageStart(Context context, String pageName) {
StatService.onPageStart(context, pageName);
}
/**
@@ -69,7 +57,6 @@ public class StatisticModel {
* @param pageName 页面名称
*/
void onPageEnd(Context context, String pageName) {
StatService.onPageEnd(context, pageName);
}