diff --git a/app/build.gradle b/app/build.gradle index daa18eadc5..870c725958 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -239,7 +239,7 @@ dependencies { }) implementation "com.github.CarGuo.GSYVideoPlayer:gsyVideoPlayer-exo_player2:$gsyVideo" - implementation "androidx.work:work-runtime:${workManager}" +// implementation "androidx.work:work-runtime:${workManager}" implementation "com.llew.huawei:verifier:${verifier}" diff --git a/app/proguard-rules.txt b/app/proguard-rules.txt index 955a7a8e01..8a1e3e5131 100644 --- a/app/proguard-rules.txt +++ b/app/proguard-rules.txt @@ -39,6 +39,9 @@ -keepclassmembers interface com.j256.* { *; } -dontwarn com.j256.** +# 避免 gson 找不到 enum +-keepclassmembers enum * { *; } + ### AutoScrollViewPager -keep class cn.trinea.android.* { *; } -keepclassmembers class cn.trinea.android.* { *; } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a89593f397..8463ed939b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,10 +16,6 @@ - - - - @@ -62,6 +58,14 @@ android:name="android.permission.READ_CONTACTS" tools:node="remove" /> + + + + - - - - + + + + + + + + + + + "" } - val intent = WebActivity.getIntent(requireContext(), selectedUrl, true) - requireContext().startActivity(intent) + DirectUtils.directToExternalBrowser(requireContext(), selectedUrl) } }, hypertextPositionPair.first, hypertextPositionPair.second, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) } diff --git a/app/src/main/java/com/gh/common/util/DataUtils.java b/app/src/main/java/com/gh/common/util/DataUtils.java index 2edff346ee..81bc257ccf 100644 --- a/app/src/main/java/com/gh/common/util/DataUtils.java +++ b/app/src/main/java/com/gh/common/util/DataUtils.java @@ -69,10 +69,11 @@ public class DataUtils { } else { options.setAnrEnabled(false); } - + options.setDebug(BuildConfig.DEBUG); - options.setEnableSessionTracking(true); + options.setEnableAutoSessionTracking(true); options.setEnvironment(BuildConfig.FLAVOR); + options.setEnableSystemEventBreadcrumbs(false); options.setDsn("https://6b1caf0d17c1408e8680f3f73ff80bd0@sentry.shanqu.cc/22"); options.setBeforeSend((event, hint) -> { diff --git a/app/src/main/java/com/gh/common/util/DirectUtils.kt b/app/src/main/java/com/gh/common/util/DirectUtils.kt index f0078ce1a7..24c6a1e02f 100644 --- a/app/src/main/java/com/gh/common/util/DirectUtils.kt +++ b/app/src/main/java/com/gh/common/util/DirectUtils.kt @@ -34,7 +34,6 @@ import com.gh.gamecenter.common.entity.Display import com.gh.gamecenter.common.entity.LinkEntity import com.gh.gamecenter.common.retrofit.Response import com.gh.gamecenter.common.utils.* -import com.gh.gamecenter.core.utils.RunningUtils import com.gh.gamecenter.core.utils.ToastUtils import com.gh.gamecenter.download.DownloadFragment.Companion.INDEX_UPDATE import com.gh.gamecenter.entity.* @@ -1331,9 +1330,7 @@ object DirectUtils { */ @JvmStatic fun directToHomeTab(context: Context) { - if (RunningUtils.isRunning(context) - && MainActivity::class.java.name == RunningUtils.getBaseActivity(context) - ) { + if (HaloApp.getInstance().isRunningForeground) { val intent = Intent(context, MainActivity::class.java) intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP context.startActivity(intent) @@ -1354,9 +1351,7 @@ object DirectUtils { */ @JvmStatic fun directToForum(context: Context, position: Int = 0) { - if (RunningUtils.isRunning(context) - && MainActivity::class.java.name == RunningUtils.getBaseActivity(context) - ) { + if (HaloApp.getInstance().isRunningForeground) { val intent = Intent(context, MainActivity::class.java) intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP context.startActivity(intent) @@ -1379,9 +1374,7 @@ object DirectUtils { */ @JvmStatic fun directToVideoTab(context: Context) { - if (RunningUtils.isRunning(context) - && MainActivity::class.java.name == RunningUtils.getBaseActivity(context) - ) { + if (HaloApp.getInstance().isRunningForeground) { val intent = Intent(context, MainActivity::class.java) intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP context.startActivity(intent) @@ -1400,9 +1393,7 @@ object DirectUtils { */ @JvmStatic fun directToPersonalTab(context: Context) { - if (RunningUtils.isRunning(context) - && MainActivity::class.java.name == RunningUtils.getBaseActivity(context) - ) { + if (HaloApp.getInstance().isRunningForeground) { val intent = Intent(context, MainActivity::class.java) intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP context.startActivity(intent) diff --git a/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt b/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt index 4226ca6e57..445646856a 100644 --- a/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt +++ b/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt @@ -22,7 +22,6 @@ import com.gh.gamecenter.core.utils.SpeedUtils import com.halo.assistant.HaloApp import com.lightgame.download.DownloadEntity import com.lightgame.download.DownloadStatus -import com.walkud.rom.checker.RomIdentifier object DownloadNotificationHelper { @@ -37,7 +36,6 @@ object DownloadNotificationHelper { const val ACTION_VDOWNLOAD = "com.gh.gamecenter.VDOWNLOAD" private val mNotifyMap: MutableMap = mutableMapOf() - private val mShouldUseAlternativeNotificationIcon by lazy { RomIdentifier.getRom().versionName == null } private fun getNotificationManager(): NotificationManager { return HaloApp.getInstance().application.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager @@ -197,6 +195,6 @@ object DownloadNotificationHelper { } private fun getNotificationIcon(): Int { - return if (mShouldUseAlternativeNotificationIcon) R.drawable.ic_download_notification else R.mipmap.logo + return R.mipmap.logo } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/util/EntranceUtils.java b/app/src/main/java/com/gh/common/util/EntranceUtils.java index 451a4e0d47..bb3a0033db 100644 --- a/app/src/main/java/com/gh/common/util/EntranceUtils.java +++ b/app/src/main/java/com/gh/common/util/EntranceUtils.java @@ -25,7 +25,6 @@ import com.gh.gamecenter.common.base.fragment.ToolbarFragment; import com.gh.gamecenter.common.constant.EntranceConsts; import com.gh.gamecenter.core.utils.ClassUtils; import com.gh.gamecenter.core.utils.GsonUtils; -import com.gh.gamecenter.core.utils.RunningUtils; import com.gh.gamecenter.core.utils.SPUtils; import com.halo.assistant.HaloApp; import com.lightgame.utils.Utils; @@ -41,9 +40,7 @@ public class EntranceUtils { public static void jumpActivity(Context context, Bundle bundle) { bundle.putBoolean(KEY_REQUIRE_REDIRECT, true); - //TODO 把其他类似的跳转启动逻辑也处理掉 - if (RunningUtils.isRunning(context) - && MainActivity.class.getName().equals(RunningUtils.getBaseActivity(context))) { + if (HaloApp.getInstance().isRunningForeground) { // 应用正在运行,前台或后台 String to = bundle.getString(KEY_TO); Class clazz = ClassUtils.forName(to); @@ -69,9 +66,7 @@ public class EntranceUtils { public static void jumpActivity(Context context, Bundle nextToBundle, Bundle bundle, Callback callback) { bundle.putBoolean(KEY_REQUIRE_REDIRECT, true); - //TODO 把其他类似的跳转启动逻辑也处理掉 - if (RunningUtils.isRunning(context) - && MainActivity.class.getName().equals(RunningUtils.getBaseActivity(context))) { + if (HaloApp.getInstance().isRunningForeground) { // 应用正在运行,前台或后台 String to = bundle.getString(KEY_TO); Class clazz = ClassUtils.forName(to); diff --git a/app/src/main/java/com/gh/common/util/PackageUtils.java b/app/src/main/java/com/gh/common/util/PackageUtils.java index 27a2a5cbd9..b180a5784e 100644 --- a/app/src/main/java/com/gh/common/util/PackageUtils.java +++ b/app/src/main/java/com/gh/common/util/PackageUtils.java @@ -27,6 +27,7 @@ import com.gh.common.xapk.XapkInstaller; import com.gh.gamecenter.BuildConfig; import com.gh.gamecenter.common.constant.Constants; import com.gh.gamecenter.common.utils.ExtensionsKt; +import com.gh.gamecenter.common.utils.PackageFlavorHelper; import com.gh.gamecenter.core.utils.SentryHelper; import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; @@ -67,8 +68,13 @@ import java.util.zip.ZipInputStream; public class PackageUtils { + private static long mLastInstalledPackageListTime = 0L; + private static List mInstalledPackageList = null; + public static final String publicKey = "OpenSSLRSAPublicKey{modulus=a8c4bb5748fec8d5c35db1a7a182d41ba4721a91131a417330af79ef4ddb43f9fa0ff4907b0a613bfe152de0ed8fc1b2e6f94a908aa98a5f7adc1ce814ba7ec919d75d9910bdfd8649b4789da6a90ffb61f0d23ac4f828a78fcd0d6f6120c1c43c1f87f7498a89eb40ca8e32dfc2f9d5c10d612b95192870223674e241e53305abf320d7eed76ded398778576e4db7b17b3bc6a792f13de5e43a6a5fae4276c73e6990ce97f68dff0ec16fc9594f175c8d49cd0d7877340d9de60942ca0efc737e50b6c295dfe0713e4532b4e810e1ea11b702b4a27753e41559cbceb247e7f044ec4e3ab2e8bccd8b9fd71286e63307550bcde86deee95adb8133076269135b,publicExponent=10001}"; + private static final String TAG = "PackageUtils"; + /* * 判断是否可以更新,只判断gh_version的大小 */ @@ -815,21 +821,25 @@ public class PackageUtils { * @return 进程名 */ public static String obtainProcessName(Context context) { - try { - final int pid = android.os.Process.myPid(); - ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); - List listTaskInfo = am.getRunningAppProcesses(); - if (listTaskInfo != null && !listTaskInfo.isEmpty()) { - for (ActivityManager.RunningAppProcessInfo info : listTaskInfo) { - if (info != null && info.pid == pid) { - return info.processName; + if (PackageFlavorHelper.IS_TEST_FLAVOR) { + try { + final int pid = android.os.Process.myPid(); + ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); + List listTaskInfo = am.getRunningAppProcesses(); + if (listTaskInfo != null && !listTaskInfo.isEmpty()) { + for (ActivityManager.RunningAppProcessInfo info : listTaskInfo) { + if (info != null && info.pid == pid) { + return info.processName; + } } } + } catch (Exception e) { + // 遇到异常了让这次调用正常执行 + e.printStackTrace(); + return BuildConfig.APPLICATION_ID; } - } catch (Exception e) { - // 遇到异常了让这次调用正常执行 - e.printStackTrace(); - return BuildConfig.APPLICATION_ID; + } else { + return null; } return null; } @@ -871,12 +881,36 @@ public class PackageUtils { return false; } + /** + * 弃用已安装列表缓存 + */ + public static void dumpInstalledListCache() { + mLastInstalledPackageListTime = 0; + } + + public static List getInstalledPackages(Context context, int flags) { + Utils.log(TAG, "即将获取已安装应用列表"); + + // 简单 debounce 掉过于频繁的调用获取已安装列表调用 + if (System.currentTimeMillis() - mLastInstalledPackageListTime < 1000 + && mInstalledPackageList != null + && mInstalledPackageList.size() > 0) { + Utils.log(TAG, "使用了缓存的已安装应用列表"); + return new ArrayList<>(mInstalledPackageList); + } + + Utils.log(TAG, "调用系统 API 获取全新的已安装应用列表"); + + mLastInstalledPackageListTime = System.currentTimeMillis(); + mInstalledPackageList = getInstalledPackagesInternal(context, flags); + return mInstalledPackageList; + } /** * 在5.1系统手机使用PackageManager获取已安装应用容易发生Package manager has died异常 - * https://stackoverflow.com/questions/13235793/transactiontoolargeeception-when-trying-to-get-a-list-of-applications-installed/30062632#30062632 + * https://stackoverflow.com/questions/13235793/transactiontoolargeeception-when-trying-tÏo-get-a-list-of-applications-installed/30062632#30062632 */ - public static List getInstalledPackages(Context context, int flags) { + private static List getInstalledPackagesInternal(Context context, int flags) { final PackageManager pm = context.getPackageManager(); try { return pm.getInstalledPackages(flags); diff --git a/app/src/main/java/com/gh/download/DownloadManager.java b/app/src/main/java/com/gh/download/DownloadManager.java index b561d2cd6b..602f48bc44 100644 --- a/app/src/main/java/com/gh/download/DownloadManager.java +++ b/app/src/main/java/com/gh/download/DownloadManager.java @@ -411,11 +411,6 @@ public class DownloadManager implements DownloadStatusListener { String url = downloadEntity.getUrl(); checkDownloadEntryRecordValidate(url); - // 添加当前设备为模拟器的标签 - if (HaloApp.getInstance().isEmulator()) { - downloadEntity.getMeta().put("isEmulator", "true"); - } - if (isDownloadCompleted(url)) { downloadEntity.setStatus(DownloadStatus.done); DataChanger.INSTANCE.notifyDataChanged(downloadEntity); diff --git a/app/src/main/java/com/gh/download/DownloadWorkManager.kt b/app/src/main/java/com/gh/download/DownloadWorkManager.kt index 42ee264f0b..c4731425dc 100644 --- a/app/src/main/java/com/gh/download/DownloadWorkManager.kt +++ b/app/src/main/java/com/gh/download/DownloadWorkManager.kt @@ -1,40 +1,32 @@ package com.gh.download -import android.os.Environment -import androidx.work.PeriodicWorkRequest -import androidx.work.WorkManager -import com.gh.gamecenter.common.utils.tryWithDefaultCatch -import com.halo.assistant.HaloApp -import com.lightgame.download.FileUtils -import java.util.concurrent.TimeUnit - object DownloadWorkManager { private const val TAG_DOWNLOAD = "tag_download" @JvmStatic fun addWorker() { - cancelWorker() - - // 可用存储空间少于 5G ,不使用 WorkManager,避免各种因为存储空间造成的问题 - if (FileUtils.isMounted() && FileUtils.getFreeSpaceByPath(Environment.getExternalStorageDirectory().absolutePath) < 1024F * 5) return - - // 每 15 分钟检查一下是否需要重试下载 - val builder = PeriodicWorkRequest.Builder( - DownloadWorker::class.java, - PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS, - TimeUnit.MILLISECONDS) - - val workerRequest = builder - .addTag(TAG_DOWNLOAD) - .build() - - tryWithDefaultCatch { WorkManager.getInstance(HaloApp.getInstance().applicationContext).enqueue(workerRequest) } +// cancelWorker() +// +// // 可用存储空间少于 5G ,不使用 WorkManager,避免各种因为存储空间造成的问题 +// if (FileUtils.isMounted() && FileUtils.getFreeSpaceByPath(Environment.getExternalStorageDirectory().absolutePath) < 1024F * 5) return +// +// // 每 15 分钟检查一下是否需要重试下载 +// val builder = PeriodicWorkRequest.Builder( +// DownloadWorker::class.java, +// PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS, +// TimeUnit.MILLISECONDS) +// +// val workerRequest = builder +// .addTag(TAG_DOWNLOAD) +// .build() +// +// tryWithDefaultCatch { WorkManager.getInstance(HaloApp.getInstance().applicationContext).enqueue(workerRequest) } } @JvmStatic fun cancelWorker() { - tryWithDefaultCatch { WorkManager.getInstance(HaloApp.getInstance().applicationContext).cancelAllWorkByTag(TAG_DOWNLOAD) } +// tryWithDefaultCatch { WorkManager.getInstance(HaloApp.getInstance().applicationContext).cancelAllWorkByTag(TAG_DOWNLOAD) } } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/download/DownloadWorker.kt b/app/src/main/java/com/gh/download/DownloadWorker.kt index 09a18ae375..cdfcbb39f9 100644 --- a/app/src/main/java/com/gh/download/DownloadWorker.kt +++ b/app/src/main/java/com/gh/download/DownloadWorker.kt @@ -1,18 +1,17 @@ -package com.gh.download - -import android.content.Context -import androidx.work.Worker -import androidx.work.WorkerParameters -import com.lightgame.utils.Utils - -class DownloadWorker(private val mContext: Context, workerParams: WorkerParameters) - : Worker(mContext, workerParams) { - - override fun doWork(): Result { - Utils.log("WorkManager try checkAndRetryDownload.") - - DownloadManager.getInstance().checkAndRetryDownload() - return Result.success() - } - -} \ No newline at end of file +//package com.gh.download +// +//import android.content.Context +//import androidx.work.WorkerParameters +//import com.lightgame.utils.Utils +// +//class DownloadWorker(private val mContext: Context, workerParams: WorkerParameters) +// : Worker(mContext, workerParams) { +// +// override fun doWork(): Result { +// Utils.log("WorkManager try checkAndRetryDownload.") +// +// DownloadManager.getInstance().checkAndRetryDownload() +// return Result.success() +// } +// +//} \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 9d5faf6a95..980a9041a4 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -333,7 +333,7 @@ public class MainActivity extends BaseActivity { // 检查是否需要触发 XAPK 安装 AppExecutor.getUiExecutor().executeWithDelay(this::resumeXapkInstallIfNeeded, 150); - QuickLoginHelper.getPhoneInfo(this); +// QuickLoginHelper.getPhoneInfo(this); WechatBindHelper.getWechatConfig(null); initWBSDK(); CertificationSwitchHelper.getCertificationSwitch(); diff --git a/app/src/main/java/com/gh/gamecenter/SkipActivity.java b/app/src/main/java/com/gh/gamecenter/SkipActivity.java index 83876c2473..d144ce79ab 100644 --- a/app/src/main/java/com/gh/gamecenter/SkipActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SkipActivity.java @@ -52,8 +52,8 @@ import com.gh.common.util.DirectUtils; import com.gh.gamecenter.common.constant.EntranceConsts; import com.gh.common.util.EntranceUtils; import com.gh.common.util.PlatformUtils; +import com.gh.gamecenter.core.utils.CurrentActivityHolder; import com.gh.gamecenter.core.utils.GsonUtils; -import com.gh.gamecenter.core.utils.RunningUtils; import com.gh.gamecenter.common.entity.CommunityEntity; import com.gh.gamecenter.common.entity.LinkEntity; import com.gh.gamecenter.entity.SimpleGameEntity; @@ -61,6 +61,7 @@ import com.gh.gamecenter.entity.SubjectRecommendEntity; import com.gh.gamecenter.entity.VideoLinkEntity; import com.gh.gamecenter.video.detail.VideoDetailContainerViewModel; import com.gh.gamecenter.video.videomanager.VideoManagerActivity; +import com.halo.assistant.HaloApp; import com.lightgame.config.CommonDebug; import com.lightgame.utils.Utils; @@ -155,8 +156,7 @@ public class SkipActivity extends BaseActivity { break; case HOST_COMMUNITY: // 把切换放到 MainActivity 处理 - if (RunningUtils.isRunning(this) - && MainActivity.class.getName().equals(RunningUtils.getBaseActivity(this))) { + if (HaloApp.getInstance().isRunningForeground) { intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra(MainActivity.SWITCH_TO_COMMUNITY, true); @@ -239,8 +239,7 @@ public class SkipActivity extends BaseActivity { break; case HOST_VIDEO_STREAMING_HOME: // 把切换放到 MainActivity 处理 - if (RunningUtils.isRunning(this) - && MainActivity.class.getName().equals(RunningUtils.getBaseActivity(this))) { + if (HaloApp.getInstance().isRunningForeground) { intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra(MainActivity.SWITCH_TO_VIDEO, true); diff --git a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.kt b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.kt index 96cb463d97..28da3fb1f8 100644 --- a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.kt @@ -25,7 +25,6 @@ import com.gh.common.util.GameSubstituteRepositoryHelper.updateGameSubstituteRep import com.gh.common.util.UsageStatsHelper.checkAndPostUsageStats import com.gh.download.DownloadManager import com.gh.gamecenter.common.base.activity.BaseActivity -import com.gh.gamecenter.common.callback.SimpleCallback import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.tracker.TrackerLogger @@ -66,7 +65,6 @@ class SplashScreenActivity : BaseActivity() { private val mPermissions = arrayOf( Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, - Manifest.permission.READ_PHONE_STATE, PermissionHelper.PERMISSION_GET_INSTALLED_LIST ) @@ -156,24 +154,36 @@ class SplashScreenActivity : BaseActivity() { private fun showPrivacyDialog(guideLayout: ViewPager) { NewPrivacyPolicyDialogFragment.show(this, null) { isSuccess: Boolean -> if (isSuccess) { - val callback = object : SimpleCallback { - override fun onCallback(arg: Boolean) { - // Dialog dismiss 后的回调 - guideLayout.visibility = View.VISIBLE - SPUtils.setBoolean(Constants.SP_BRAND_NEW_USER, false) - if (arg) { - requestPermission() - } else { - mStartMainActivityDirectly = false - } - } + guideLayout.visibility = View.VISIBLE + SPUtils.setBoolean(Constants.SP_BRAND_NEW_USER, false) + + // 恢复畅玩数据 + VHelper.recoverVDataIfPossible() + + // 检查是否有旧版本光环,有就删掉 + AppExecutor.ioExecutor.execute { deleteOutdatedUpdatePackage() } + if (mStartMainActivityDirectly) { + launchMainActivity() } - mViewModel?.showPrivacyPolicy({ - DialogUtils.showPrivacyPolicyDialog(this@SplashScreenActivity, it, callback) - }, { - DialogUtils.showPrivacyPolicyDialog(this@SplashScreenActivity, PrivacyPolicyEntity.createDefaultData(), callback) - }) +// val callback = object : SimpleCallback { +// override fun onCallback(arg: Boolean) { +// // Dialog dismiss 后的回调 +// guideLayout.visibility = View.VISIBLE +// SPUtils.setBoolean(Constants.SP_BRAND_NEW_USER, false) +// if (arg) { +// requestPermission() +// } else { +// mStartMainActivityDirectly = false +// } +// } +// } +// +// mViewModel?.showPrivacyPolicy({ +// DialogUtils.showPrivacyPolicyDialog(this@SplashScreenActivity, it, callback) +// }, { +// DialogUtils.showPrivacyPolicyDialog(this@SplashScreenActivity, PrivacyPolicyEntity.createDefaultData(), callback) +// }) } else { DialogUtils.showPrivacyPolicyDisallowDialog(this, PrivacyPolicyEntity.createDefaultData(), object : EmptyCallback { diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescFragment.kt index ab1f6be2b5..5c884e53e7 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescFragment.kt @@ -22,7 +22,6 @@ import com.gh.gamecenter.common.utils.viewModelProvider import com.gh.gamecenter.common.utils.viewModelProviderFromParent import com.gh.gamecenter.core.iinterface.IScrollable import com.gh.gamecenter.core.utils.MtaHelper -import com.gh.gamecenter.core.utils.RunningUtils import com.gh.gamecenter.core.utils.SPUtils import com.gh.gamecenter.databinding.FragmentDescBinding import com.gh.gamecenter.entity.GameEntity @@ -133,7 +132,7 @@ class DescFragment : BaseFragment(), IScrollable { } if (openVideoStreaming) { gameDetail.data!!.detailEntity.forEach { entity -> - if (entity.video != null && !RunningUtils.isEqualsTop(context, VideoDetailActivity::class.java.name)) { + if (entity.video != null && activity !is VideoDetailActivity) { DirectUtils.directToVideoDetail( requireContext(), entity.video!![0].videoId, entity.video!![0].videoId, path = "游戏详情-介绍视频" ) diff --git a/app/src/main/java/com/gh/gamecenter/receiver/ActivitySkipReceiver.java b/app/src/main/java/com/gh/gamecenter/receiver/ActivitySkipReceiver.java index 07dd8b92c4..1f4e818e76 100644 --- a/app/src/main/java/com/gh/gamecenter/receiver/ActivitySkipReceiver.java +++ b/app/src/main/java/com/gh/gamecenter/receiver/ActivitySkipReceiver.java @@ -8,8 +8,8 @@ import android.text.TextUtils; import com.gh.gamecenter.core.utils.ClassUtils; import com.gh.gamecenter.common.utils.ExtensionsKt; -import com.gh.gamecenter.core.utils.RunningUtils; import com.gh.gamecenter.SplashScreenActivity; +import com.halo.assistant.HaloApp; /** * Created by khy on 2016/9/1. @@ -24,7 +24,7 @@ public class ActivitySkipReceiver extends BroadcastReceiver { ExtensionsKt.doOnMainProcessOnly(context, () -> { if (ACTION_ACTIVITY_SKIP.equals(intent.getAction())) { Bundle bundle = intent.getExtras(); - if (RunningUtils.isRunning(context) && bundle != null) { + if (HaloApp.getInstance().isRunningForeground && bundle != null) { // 应用正在运行,前台或后台 String to = bundle.getString("to"); if (!TextUtils.isEmpty(to)) { diff --git a/app/src/main/java/com/gh/gamecenter/receiver/InstallAndUninstallReceiver.java b/app/src/main/java/com/gh/gamecenter/receiver/InstallAndUninstallReceiver.java index d05872759d..24b2e4be70 100644 --- a/app/src/main/java/com/gh/gamecenter/receiver/InstallAndUninstallReceiver.java +++ b/app/src/main/java/com/gh/gamecenter/receiver/InstallAndUninstallReceiver.java @@ -30,6 +30,7 @@ public class InstallAndUninstallReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { + PackageUtils.dumpInstalledListCache(); ExtensionsKt.doOnMainProcessOnly(context, () -> { Utils.log("InstallAndUninstallReceiver:: onReceive->" + intent.getAction() + "==" + intent.getDataString()); // 接收安装广播 diff --git a/app/src/main/java/com/gh/gamecenter/receiver/InstallReceiver.java b/app/src/main/java/com/gh/gamecenter/receiver/InstallReceiver.java index 8549790283..e5d91f36b6 100644 --- a/app/src/main/java/com/gh/gamecenter/receiver/InstallReceiver.java +++ b/app/src/main/java/com/gh/gamecenter/receiver/InstallReceiver.java @@ -19,7 +19,9 @@ import com.gh.gamecenter.common.constant.Constants; import com.gh.gamecenter.common.constant.EntranceConsts; import com.gh.gamecenter.common.eventbus.EBMiPush; import com.gh.gamecenter.common.utils.ExtensionsKt; -import com.gh.gamecenter.core.utils.RunningUtils; +import com.gh.gamecenter.core.utils.CurrentActivityHolder; +import com.gh.gamecenter.core.utils.GsonUtils; +import com.halo.assistant.HaloApp; import com.gh.gamecenter.download.DownloadFragment; import com.lightgame.download.DownloadDao; import com.lightgame.download.DownloadEntity; @@ -60,8 +62,8 @@ public class InstallReceiver extends BroadcastReceiver { context.startActivity(intent2); } } else { - if (RunningUtils.isRunning(context)) { - if (RunningUtils.isEqualsTop(context, DownloadManagerActivity.class.getName())) { + if (HaloApp.getInstance().isRunningForeground) { + if (CurrentActivityHolder.getCurrentActivity() instanceof DownloadManagerActivity) { // 这里是指从后台返回到前台 前两个的是关键 Intent intent2 = new Intent(); intent2.setAction(Intent.ACTION_MAIN); diff --git a/app/src/main/java/com/gh/gamecenter/setting/VideoSettingFragment.kt b/app/src/main/java/com/gh/gamecenter/setting/VideoSettingFragment.kt index 00cc782c22..f82c526f8d 100644 --- a/app/src/main/java/com/gh/gamecenter/setting/VideoSettingFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/setting/VideoSettingFragment.kt @@ -7,7 +7,6 @@ import com.gh.gamecenter.common.base.fragment.ToolbarFragment import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.utils.setSwitchAnimation import com.gh.gamecenter.common.utils.toColor -import com.gh.gamecenter.common.utils.toDrawable import com.gh.gamecenter.core.utils.SPUtils import com.gh.gamecenter.databinding.FragmentVideoSettingBinding diff --git a/app/src/main/java/com/halo/assistant/HaloApp.java b/app/src/main/java/com/halo/assistant/HaloApp.java index 6bb43c6dcf..ab882c2d5b 100644 --- a/app/src/main/java/com/halo/assistant/HaloApp.java +++ b/app/src/main/java/com/halo/assistant/HaloApp.java @@ -17,7 +17,6 @@ import androidx.collection.ArrayMap; import androidx.lifecycle.ProcessLifecycleOwner; import androidx.multidex.MultiDexApplication; import androidx.webkit.WebViewCompat; -import androidx.work.Configuration; import com.alibaba.android.arouter.launcher.ARouter; import com.facebook.animated.giflite.GifDecoder; @@ -45,7 +44,6 @@ import com.gh.gamecenter.common.image.EmptyDecoder; import com.gh.gamecenter.common.tracker.Tracker; import com.gh.gamecenter.common.utils.DarkModeUtils; import com.gh.gamecenter.common.utils.DeviceUtils; -import com.gh.gamecenter.common.utils.EmulatorUtil; import com.gh.gamecenter.common.utils.ExtensionsKt; import com.gh.gamecenter.common.utils.ImageUtils; import com.gh.gamecenter.common.utils.PackageFlavorHelper; @@ -85,7 +83,7 @@ import io.reactivex.plugins.RxJavaPlugins; import tv.danmaku.ijk.media.exo2.Exo2PlayerManager; import tv.danmaku.ijk.media.exo2.ExoPlayerCacheManager; -public class HaloApp extends MultiDexApplication implements Configuration.Provider { +public class HaloApp extends MultiDexApplication { private static HaloApp mInstance; private static final ArrayMap sObjectMap = new ArrayMap<>(); @@ -98,7 +96,6 @@ public class HaloApp extends MultiDexApplication implements Configuration.Provid private String mServerUserMark = ""; // 服务端用来标记用户是新/老的标记,有 new 和 old 两个,获取不到时为空 private boolean mIsPostInitialized = false; // 是否已经延迟初始化过相关组件,避免重复初始化 - private boolean mIsEmulator = false; // 当前设备是否为模拟器 private boolean mIsReinstallTheSameVersion = false; // 当前用户是否重新安装了一次当前版本后的第一次打开 public long deviceRamSize = 0; @@ -182,7 +179,7 @@ public class HaloApp extends MultiDexApplication implements Configuration.Provid return mUA; } - public List getWebViewAbiList(){ + public List getWebViewAbiList() { return webViewAbiList; } @@ -290,10 +287,10 @@ public class HaloApp extends MultiDexApplication implements Configuration.Provid ExtensionsKt.doOnMainProcessOnly(this, () -> { retrieveVGameInfoIfNeeded(); PackageRepository.initData(); + PackageHelper.refreshLocalPackageList(); + PackageHelper.initList(); }); - checkIfDeviceIsEmulator(); - initReceiver(); initPackageChangesReceiver(); initConnectivityChangesReceiver(); @@ -394,9 +391,7 @@ public class HaloApp extends MultiDexApplication implements Configuration.Provid // 初始化全局下载监听 DownloadObserver.initObserver(); - PackageHelper.refreshLocalPackageList(); - PackageHelper.initList(); - + // TODO 因为隐私政策需求,需要改动这里的 rom 获取代码 Rom rom = RomIdentifier.getRom(); if ("miui".equals(rom.name().toLowerCase(Locale.CHINA))) { DisplayUtils.sShouldUseLegacyMiuiStatusBarMethod = rom.getVersionCode() < 8; @@ -460,29 +455,10 @@ public class HaloApp extends MultiDexApplication implements Configuration.Provid } } - /** - * 检查当前设备是否为模拟器 - */ - private void checkIfDeviceIsEmulator() { - mIsEmulator = SPUtils.getBoolean(Constants.SP_IS_EMULATOR); - if (!mIsEmulator) { - EmulatorUtil.getSingleInstance().readSysProperty(HaloApp.getInstance().getApplication(), arg -> { - if (arg) { - SPUtils.setBoolean(Constants.SP_IS_EMULATOR, true); - mIsEmulator = true; - } - }); - } - } - private void retrieveVGameInfoIfNeeded() { VHelper.init(this); } - public boolean isEmulator() { - return mIsEmulator; - } - public boolean isReinstallTheSameVersion() { return mIsReinstallTheSameVersion; } @@ -505,11 +481,11 @@ public class HaloApp extends MultiDexApplication implements Configuration.Provid || SPUtils.getBooleanWithContext(context, Constants.SP_IS_USER_ACCEPTED_PRIVACY_STATEMENT, false); } - @NonNull - @Override - public Configuration getWorkManagerConfiguration() { - return new Configuration.Builder().build(); - } +// @NonNull +// @Override +// public Configuration getWorkManagerConfiguration() { +// return new Configuration.Builder().build(); +// } @Override protected void attachBaseContext(Context base) { diff --git a/dependencies.gradle b/dependencies.gradle index 45769e698c..528961ab56 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -7,8 +7,8 @@ ext { targetSdkVersion = 28 // application info (每个大版本之间的 versionCode 增加 20) - versionCode = 630 - versionName = "5.14.0" + versionCode = 611 + versionName = "5.13.1" applicationId = "com.gh.gamecenter" // AndroidX @@ -114,10 +114,10 @@ ext { shapeOfView = "1.4.7" splitties = "3.0.0" apksig = "1.0.0" - gid = "1.3.1" + gid = "1.3.2" dokit = "3.5.0" - sentry = "4.3.0" + sentry = "5.7.4" lancet_version = "v1.0.6" autoServiceVersion = "1.0-rc7" diff --git a/libraries/LGLibrary b/libraries/LGLibrary index 768dcec118..8e00622f01 160000 --- a/libraries/LGLibrary +++ b/libraries/LGLibrary @@ -1 +1 @@ -Subproject commit 768dcec118e957f9ae3c64c88f2a3a282c0cc53f +Subproject commit 8e00622f0154aeb28028d05e85bc1d934978055a diff --git a/libraries/QQShare/build.gradle b/libraries/QQShare/build.gradle index 5a298ac9b7..8d1b9140db 100644 --- a/libraries/QQShare/build.gradle +++ b/libraries/QQShare/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.library' dependencies { api fileTree(dir: 'libs', exclude: 'android-support-*.jar', include: '*.jar') - implementation files('libs/open_sdk_3.5.5.79_ra741783e_lite.jar') + implementation files('libs/open_sdk_3.5.12.2_r97423a8_lite.jar') } android { diff --git a/libraries/QQShare/libs/open_sdk_3.5.12.2_r97423a8_lite.jar b/libraries/QQShare/libs/open_sdk_3.5.12.2_r97423a8_lite.jar new file mode 100644 index 0000000000..6e0b4d1857 Binary files /dev/null and b/libraries/QQShare/libs/open_sdk_3.5.12.2_r97423a8_lite.jar differ diff --git a/libraries/QQShare/libs/open_sdk_3.5.5.79_ra741783e_lite.jar b/libraries/QQShare/libs/open_sdk_3.5.5.79_ra741783e_lite.jar deleted file mode 100644 index e1a1b2e78a..0000000000 Binary files a/libraries/QQShare/libs/open_sdk_3.5.5.79_ra741783e_lite.jar and /dev/null differ diff --git a/module_common/src/main/AndroidManifest.xml b/module_common/src/main/AndroidManifest.xml index f17b266c8e..3a57e781f3 100644 --- a/module_common/src/main/AndroidManifest.xml +++ b/module_common/src/main/AndroidManifest.xml @@ -3,8 +3,4 @@ package="com.gh.gamecenter.common"> - - - - \ No newline at end of file diff --git a/module_common/src/main/java/com/gh/gamecenter/common/base/activity/BaseActivity.java b/module_common/src/main/java/com/gh/gamecenter/common/base/activity/BaseActivity.java index 8ac66a7f12..a0617d59c1 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/base/activity/BaseActivity.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/base/activity/BaseActivity.java @@ -63,7 +63,6 @@ import com.gh.gamecenter.core.provider.IPackageInstallerProvider; import com.gh.gamecenter.core.provider.IQuickLoginProvider; import com.gh.gamecenter.core.utils.DisplayUtils; import com.gh.gamecenter.core.utils.MtaHelper; -import com.gh.gamecenter.core.utils.RunningUtils; import com.gh.gamecenter.core.utils.SPUtils; import com.gh.gamecenter.core.utils.StringUtils; import com.lightgame.BaseAppCompatActivity; @@ -355,8 +354,10 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements Easy @Subscribe(threadMode = ThreadMode.MAIN) public void onEventMainThread(final EBShowDialog showDialog) { + // 当当前实体被标记为使用过以后,不再响应它的内容 if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED) - && this.getClass().getName().equals(RunningUtils.getTopActivity(this))) { + && !showDialog.isUsed()) { + showDialog.setUsed(true); IPackageInstallerProvider packageInstallerConfig = (IPackageInstallerProvider) ARouter.getInstance().build(RouteConsts.provider.packageInstaller).navigation(); if (DOWNLOAD_HIJACK.equals(showDialog.getType())) { DialogUtils.showQqSessionDialog(this);// 建议用户联系客服 diff --git a/module_common/src/main/java/com/gh/gamecenter/common/constant/Constants.java b/module_common/src/main/java/com/gh/gamecenter/common/constant/Constants.java index 9572a83f21..c48713da57 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/constant/Constants.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/constant/Constants.java @@ -227,12 +227,6 @@ public class Constants { // 新分类2.0引导 public static final String SP_SHOW_CATEGORY_GUIDE = "show_category_guide"; - // 用户是否需要 weibo x86 so - public static final String SP_USER_NEED_WEIBO_X86_SO = "user_need_weibo_x86_so"; - - // 当前设备是不是模拟器 - public static final String SP_IS_EMULATOR = "is_emulator"; - // 内容视频播放选项 public static final String SP_CONTENT_VIDEO_OPTION = "content_video_option"; // 首页/游戏详情页视频播放选项 diff --git a/module_common/src/main/java/com/gh/gamecenter/common/eventbus/EBShowDialog.java b/module_common/src/main/java/com/gh/gamecenter/common/eventbus/EBShowDialog.java index 411a11033c..3f361443a4 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/eventbus/EBShowDialog.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/eventbus/EBShowDialog.java @@ -5,6 +5,8 @@ public class EBShowDialog { private String type; private String path; + private boolean isUsed; + public EBShowDialog(String type) { this.type = type; } @@ -30,4 +32,11 @@ public class EBShowDialog { this.path = path; } + public boolean isUsed() { + return isUsed; + } + + public void setUsed(boolean used) { + isUsed = used; + } } diff --git a/module_common/src/main/java/com/gh/gamecenter/common/exposure/meta/MetaUtil.kt b/module_common/src/main/java/com/gh/gamecenter/common/exposure/meta/MetaUtil.kt index c551e3e2e0..5e6e16a546 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/exposure/meta/MetaUtil.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/exposure/meta/MetaUtil.kt @@ -12,36 +12,22 @@ import android.text.TextUtils import com.alibaba.android.arouter.launcher.ARouter import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.core.utils.SPUtils -import com.gh.gamecenter.common.utils.tryWithDefaultCatch import com.gh.gamecenter.common.HaloApp import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IAppProvider import com.gh.gamecenter.core.provider.IBuildConfigProvider import com.gh.gamecenter.core.provider.IUserManagerProvider -import com.walkud.rom.checker.RomIdentifier object MetaUtil { private val application: Application = HaloApp.getInstance() - private var channel = "" private var m: Meta? = null - private var imei: String? = null - private var base64EncodedImei: String? = null private var androidId: String? = null private var base64EncodedAndroidId: String? = null - private var romName: String? = null - private var romVersion: String? = null - fun refreshMeta() { - if (romName == null) { - tryWithDefaultCatch { - romName = RomIdentifier.getRom().name - romVersion = RomIdentifier.getRom().versionName - } - } val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider val buildConfigProvider = ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider val userManagerProvider = ARouter.getInstance().build(RouteConsts.provider.userManager).navigation() as? IUserManagerProvider @@ -61,7 +47,7 @@ object MetaUtil { appVersion = buildConfigProvider?.getVersionName(), userId = userManagerProvider?.getUserId(), exposureVersion = buildConfigProvider?.getExposureVersion(), - rom = romName + "" + romVersion + rom = "" ) } @@ -82,62 +68,64 @@ object MetaUtil { */ @JvmStatic fun getIMEI(): String { - val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider - if (appProvider?.isUserAcceptPrivacyPolicy(HaloApp.getInstance()) == false) { - return "" - } - - if (imei != null) { - return imei ?: "" - } - - imei = SPUtils.getString(Constants.SP_IMEI) - - if (!TextUtils.isEmpty(imei)) { - return imei ?: "" - } - - if (application.checkCallingOrSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) { - return "" - } - - val telephonyManager = application.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager - - if (Build.VERSION.SDK_INT >= 29) { - return "".apply { - imei = this - SPUtils.setString(Constants.SP_IMEI, this) - } - } else if (Build.VERSION.SDK_INT >= 26) { - return (telephonyManager.imei ?: "").apply { - imei = this - SPUtils.setString(Constants.SP_IMEI, this) - } - } - - return (telephonyManager.getDeviceId() ?: "").apply { - imei = this - SPUtils.setString(Constants.SP_IMEI, this) - } + return "" +// val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider +// if (appProvider?.isUserAcceptPrivacyPolicy(HaloApp.getInstance()) == false) { +// return "" +// } +// +// if (imei != null) { +// return imei ?: "" +// } +// +// imei = SPUtils.getString(Constants.SP_IMEI) +// +// if (!TextUtils.isEmpty(imei)) { +// return imei ?: "" +// } +// +// if (application.checkCallingOrSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) { +// return "" +// } +// +// val telephonyManager = application.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager +// +// if (Build.VERSION.SDK_INT >= 29) { +// return "".apply { +// imei = this +// SPUtils.setString(Constants.SP_IMEI, this) +// } +// } else if (Build.VERSION.SDK_INT >= 26) { +// return (telephonyManager.imei ?: "").apply { +// imei = this +// SPUtils.setString(Constants.SP_IMEI, this) +// } +// } +// +// return (telephonyManager.getDeviceId() ?: "").apply { +// imei = this +// SPUtils.setString(Constants.SP_IMEI, this) +// } } @JvmStatic fun getBase64EncodedIMEI(): String { - if (imei == null) { - getIMEI() - } - - if (TextUtils.isEmpty(base64EncodedImei) && imei != null) { - try { - base64EncodedImei = android.util.Base64.encodeToString(getIMEI().trim().toByteArray(), android.util.Base64.NO_WRAP) - } catch (e: java.lang.Exception) { - e.printStackTrace() - return "" - } - } - - return base64EncodedImei ?: "" + return "" +// if (imei == null) { +// getIMEI() +// } +// +// if (TextUtils.isEmpty(base64EncodedImei) && imei != null) { +// try { +// base64EncodedImei = android.util.Base64.encodeToString(getIMEI().trim().toByteArray(), android.util.Base64.NO_WRAP) +// } catch (e: java.lang.Exception) { +// e.printStackTrace() +// return "" +// } +// } +// +// return base64EncodedImei ?: "" } @JvmStatic diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/EmulatorUtil.java b/module_common/src/main/java/com/gh/gamecenter/common/utils/EmulatorUtil.java deleted file mode 100644 index 6c89d30428..0000000000 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/EmulatorUtil.java +++ /dev/null @@ -1,375 +0,0 @@ -package com.gh.gamecenter.common.utils; - -import static android.content.Context.SENSOR_SERVICE; - -import android.content.Context; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.hardware.SensorManager; -import android.net.Uri; -import android.text.TextUtils; - -import com.gh.gamecenter.common.callback.SimpleCallback; -import com.lahm.library.CheckResult; -import com.lahm.library.CommandUtil; - -public class EmulatorUtil { - - private SimpleCallback mCallback; - - private EmulatorUtil() { - - } - - private static class SingletonHolder { - private static final EmulatorUtil INSTANCE = new EmulatorUtil(); - } - - public static EmulatorUtil getSingleInstance() { - return SingletonHolder.INSTANCE; - } - - public void readSysProperty(Context context, SimpleCallback callback) { - if (context == null) - throw new IllegalArgumentException("context must not be null"); - - mCallback = callback; - - int suspectCount = 0; - - //检测硬件名称 - CheckResult hardwareResult = checkFeaturesByHardware(); - switch (hardwareResult.result) { - case CheckResult.RESULT_MAYBE_EMULATOR: - ++suspectCount; - break; - case CheckResult.RESULT_EMULATOR: - mCallback.onCallback(true); - return; - } - - //检测渠道 - CheckResult flavorResult = checkFeaturesByFlavor(); - switch (flavorResult.result) { - case CheckResult.RESULT_MAYBE_EMULATOR: - ++suspectCount; - break; - case CheckResult.RESULT_EMULATOR: - mCallback.onCallback(true); - return; - } - - //检测设备型号 - CheckResult modelResult = checkFeaturesByModel(); - switch (modelResult.result) { - case CheckResult.RESULT_MAYBE_EMULATOR: - ++suspectCount; - break; - case CheckResult.RESULT_EMULATOR: - mCallback.onCallback(true); - return; - } - - //检测硬件制造商 - CheckResult manufacturerResult = checkFeaturesByManufacturer(); - switch (manufacturerResult.result) { - case CheckResult.RESULT_MAYBE_EMULATOR: - ++suspectCount; - break; - case CheckResult.RESULT_EMULATOR: - mCallback.onCallback(true); - return; - } - - //检测主板名称 - CheckResult boardResult = checkFeaturesByBoard(); - switch (boardResult.result) { - case CheckResult.RESULT_MAYBE_EMULATOR: - ++suspectCount; - break; - case CheckResult.RESULT_EMULATOR: - mCallback.onCallback(true); - return; - } - - //检测主板平台 - CheckResult platformResult = checkFeaturesByPlatform(); - switch (platformResult.result) { - case CheckResult.RESULT_MAYBE_EMULATOR: - ++suspectCount; - break; - case CheckResult.RESULT_EMULATOR: - mCallback.onCallback(true); - return; - } - - //检测基带信息 - CheckResult baseBandResult = checkFeaturesByBaseBand(); - switch (baseBandResult.result) { - case CheckResult.RESULT_MAYBE_EMULATOR: - suspectCount += 2;//模拟器基带信息为null的情况概率相当大 - break; - case CheckResult.RESULT_EMULATOR: - mCallback.onCallback(true); - return; - } - - //检测传感器数量 - int sensorNumber = getSensorNumber(context); - if (sensorNumber <= 7) ++suspectCount; - - //检测是否支持闪光灯 - boolean supportCameraFlash = supportCameraFlash(context); - if (!supportCameraFlash) ++suspectCount; - //检测是否支持相机 - boolean supportCamera = supportCamera(context); - if (!supportCamera) ++suspectCount; - //检测是否支持蓝牙 - boolean supportBluetooth = supportBluetooth(context); - if (!supportBluetooth) ++suspectCount; - - //检测光线传感器 - boolean hasLightSensor = hasLightSensor(context); - if (!hasLightSensor) ++suspectCount; - - //检测进程组信息 - CheckResult cgroupResult = checkFeaturesByCgroup(); - if (cgroupResult.result == CheckResult.RESULT_MAYBE_EMULATOR) ++suspectCount; - - if (suspectCount > 3) { - mCallback.onCallback(true); - return; - } - // 如果有陀螺仪传感器就根据陀螺仪传感器数值判断,因为模拟器的陀螺仪数值都是0.0 - checkGyroscopeSensor(context); - } - - private String getProperty(String propName) { - String property = CommandUtil.getSingleInstance().getProperty(propName); - return TextUtils.isEmpty(property) ? null : property; - } - - /** - * 特征参数-硬件名称 - * - * @return 0表示可能是模拟器,1表示模拟器,2表示可能是真机 - */ - private CheckResult checkFeaturesByHardware() { - String hardware = getProperty("ro.hardware"); - if (null == hardware) return new CheckResult(CheckResult.RESULT_MAYBE_EMULATOR, null); - int result; - String tempValue = hardware.toLowerCase(); - switch (tempValue) { - case "ttvm"://天天模拟器 - case "nox"://夜神模拟器 - case "cancro"://网易MUMU模拟器 - case "intel"://逍遥模拟器 - case "vbox": - case "vbox86"://腾讯手游助手 - case "android_x86"://雷电模拟器 - result = CheckResult.RESULT_EMULATOR; - break; - default: - result = CheckResult.RESULT_UNKNOWN; - break; - } - return new CheckResult(result, hardware); - } - - /** - * 特征参数-渠道 - * - * @return 0表示可能是模拟器,1表示模拟器,2表示可能是真机 - */ - private CheckResult checkFeaturesByFlavor() { - String flavor = getProperty("ro.build.flavor"); - if (null == flavor) return new CheckResult(CheckResult.RESULT_MAYBE_EMULATOR, null); - int result; - String tempValue = flavor.toLowerCase(); - if (tempValue.contains("vbox")) result = CheckResult.RESULT_EMULATOR; - else if (tempValue.contains("sdk_gphone")) result = CheckResult.RESULT_EMULATOR; - else result = CheckResult.RESULT_UNKNOWN; - return new CheckResult(result, flavor); - } - - /** - * 特征参数-设备型号 - * - * @return 0表示可能是模拟器,1表示模拟器,2表示可能是真机 - */ - private CheckResult checkFeaturesByModel() { - String model = getProperty("ro.product.model"); - if (null == model) return new CheckResult(CheckResult.RESULT_MAYBE_EMULATOR, null); - int result; - String tempValue = model.toLowerCase(); - if (tempValue.contains("google_sdk")) result = CheckResult.RESULT_EMULATOR; - else if (tempValue.contains("emulator")) result = CheckResult.RESULT_EMULATOR; - else if (tempValue.contains("android sdk built for x86")) result = CheckResult.RESULT_EMULATOR; - else result = CheckResult.RESULT_UNKNOWN; - return new CheckResult(result, model); - } - - /** - * 特征参数-硬件制造商 - * - * @return 0表示可能是模拟器,1表示模拟器,2表示可能是真机 - */ - private CheckResult checkFeaturesByManufacturer() { - String manufacturer = getProperty("ro.product.manufacturer"); - if (null == manufacturer) return new CheckResult(CheckResult.RESULT_MAYBE_EMULATOR, null); - int result; - String tempValue = manufacturer.toLowerCase(); - if (tempValue.contains("genymotion")) result = CheckResult.RESULT_EMULATOR; - else if (tempValue.contains("netease")) result = CheckResult.RESULT_EMULATOR;//网易MUMU模拟器 - else result = CheckResult.RESULT_UNKNOWN; - return new CheckResult(result, manufacturer); - } - - /** - * 特征参数-主板名称 - * - * @return 0表示可能是模拟器,1表示模拟器,2表示可能是真机 - */ - private CheckResult checkFeaturesByBoard() { - String board = getProperty("ro.product.board"); - if (null == board) return new CheckResult(CheckResult.RESULT_MAYBE_EMULATOR, null); - int result; - String tempValue = board.toLowerCase(); - if (tempValue.contains("android")) result = CheckResult.RESULT_EMULATOR; - else if (tempValue.contains("goldfish")) result = CheckResult.RESULT_EMULATOR; - else result = CheckResult.RESULT_UNKNOWN; - return new CheckResult(result, board); - } - - /** - * 特征参数-主板平台 - * - * @return 0表示可能是模拟器,1表示模拟器,2表示可能是真机 - */ - private CheckResult checkFeaturesByPlatform() { - String platform = getProperty("ro.board.platform"); - if (null == platform) return new CheckResult(CheckResult.RESULT_MAYBE_EMULATOR, null); - int result; - String tempValue = platform.toLowerCase(); - if (tempValue.contains("android")) result = CheckResult.RESULT_EMULATOR; - else result = CheckResult.RESULT_UNKNOWN; - return new CheckResult(result, platform); - } - - /** - * 特征参数-基带信息 - * - * @return 0表示可能是模拟器,1表示模拟器,2表示可能是真机 - */ - private CheckResult checkFeaturesByBaseBand() { - String baseBandVersion = getProperty("gsm.version.baseband"); - if (null == baseBandVersion) return new CheckResult(CheckResult.RESULT_MAYBE_EMULATOR, null); - int result; - if (baseBandVersion.contains("1.0.0.0")) result = CheckResult.RESULT_EMULATOR; - else result = CheckResult.RESULT_UNKNOWN; - return new CheckResult(result, baseBandVersion); - } - - /** - * 获取传感器数量 - */ - private int getSensorNumber(Context context) { - SensorManager sm = (SensorManager) context.getSystemService(SENSOR_SERVICE); - return sm.getSensorList(Sensor.TYPE_ALL).size(); - } - - /** - * 是否支持相机 - */ - private boolean supportCamera(Context context) { - return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA); - } - - /** - * 是否支持闪光灯 - */ - private boolean supportCameraFlash(Context context) { - return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH); - } - - /** - * 是否支持蓝牙 - */ - private boolean supportBluetooth(Context context) { - return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH); - } - - /** - * 判断是否存在光传感器来判断是否为模拟器 - * 部分真机也不存在温度和压力传感器。其余传感器模拟器也存在。 - * - * @return false为模拟器 - */ - private boolean hasLightSensor(Context context) { - SensorManager sensorManager = (SensorManager) context.getSystemService(SENSOR_SERVICE); - Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); //光线传感器 - if (null == sensor) return false; - else return true; - } - - /** - * 特征参数-进程组信息 - */ - private CheckResult checkFeaturesByCgroup() { - String filter = CommandUtil.getSingleInstance().exec("cat /proc/self/cgroup"); - if (null == filter) return new CheckResult(CheckResult.RESULT_MAYBE_EMULATOR, null); - return new CheckResult(CheckResult.RESULT_UNKNOWN, filter); - } - - /** - * 检查是否可以拨打电话和发短信 - */ - private void checkCallPhone(Context context) { - try { - Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:123456")); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - - Intent intent2 = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:123456")); - intent2.putExtra("sms_body", "test"); - - if (intent.resolveActivity(context.getPackageManager()) == null || intent2.resolveActivity(context.getPackageManager()) == null) { - mCallback.onCallback(true); - } - } catch (Exception ignore) { - } - } - - private void checkGyroscopeSensor(Context context) { - SensorManager sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE); - SensorEventListener listener = new SensorEventListener() { - int changeTimes = 0; - int zeroTimes = 0; - - @Override - public void onSensorChanged(SensorEvent event) { - changeTimes++; - if (event.values[0] == 0.0 && event.values[1] == 0.0 && event.values[2] == 0.0) { - zeroTimes++; - } - if (changeTimes > 50) { - if (changeTimes == zeroTimes) { - checkCallPhone(context); - } - sensorManager.unregisterListener(this); - } - } - - @Override - public void onAccuracyChanged(Sensor sensor, int accuracy) { - - } - }; - Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE); - if (sensor != null) { - sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_FASTEST); - } - } -} diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/PermissionHelper.kt b/module_common/src/main/java/com/gh/gamecenter/common/utils/PermissionHelper.kt index abd43a0728..695cd6f2b3 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/PermissionHelper.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/PermissionHelper.kt @@ -19,7 +19,6 @@ import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IActivationProvider import com.gh.gamecenter.core.provider.IDirectProvider import com.gh.gamecenter.core.utils.EmptyCallback -import com.gh.gamecenter.core.utils.MtaHelper import com.gh.gamecenter.core.utils.SPUtils import com.tbruyelle.rxpermissions2.RxPermissions @@ -29,50 +28,6 @@ object PermissionHelper { const val PERMISSION_GET_INSTALLED_LIST = "com.android.permission.GET_INSTALLED_APPS" - @SuppressLint("CheckResult") - @JvmStatic - fun requestReadPhoneStateAndStoragePermissionFromStartUp(context: Context) { - if (context is FragmentActivity) { - val rxPermission = RxPermissions(context) - - var requestCount = 0 - val permissionsStatusMap = hashMapOf() - permissionsStatusMap[Manifest.permission.READ_PHONE_STATE] = false - permissionsStatusMap[Manifest.permission.READ_EXTERNAL_STORAGE] = false - permissionsStatusMap[Manifest.permission.WRITE_EXTERNAL_STORAGE] = false - - tryWithDefaultCatch { - rxPermission - .requestEach( - Manifest.permission.READ_PHONE_STATE, - Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.READ_EXTERNAL_STORAGE - ) - .subscribe { permission -> - requestCount++ - permissionsStatusMap[permission.name] = permission.granted - - if (requestCount == 2) { - val hasReadPhoneStatePermission = permissionsStatusMap[Manifest.permission.READ_PHONE_STATE] == true - val hasReadStoragePermission = permissionsStatusMap[Manifest.permission.READ_EXTERNAL_STORAGE] == true - - if (hasReadPhoneStatePermission && hasReadStoragePermission) { - MtaHelper.onEvent("授权情况", "启动授权", "都授权") - } else if (!hasReadPhoneStatePermission && !hasReadStoragePermission) { - MtaHelper.onEvent("授权情况", "启动授权", "都不授权") - } else if (hasReadPhoneStatePermission) { - MtaHelper.onEvent("授权情况", "启动授权", "只授权IMEI") - } else if (hasReadStoragePermission) { - MtaHelper.onEvent("授权情况", "启动授权", "只授权存储") - } - } - } - } - - } - } - - /** * 在执行 emptyCallback 的 action 前先判断是否有获取已安装列表的权限 */ @@ -164,8 +119,7 @@ object PermissionHelper { @JvmStatic fun checkReadPhoneStateAndStoragePermissionBeforeAction(context: Context, emptyCallback: EmptyCallback) { if (context is FragmentActivity) { - if (context.checkCallingOrSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED - && context.checkCallingOrSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED + if (context.checkCallingOrSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED && context.checkCallingOrSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED ) { emptyCallback.onCallback() @@ -175,7 +129,6 @@ object PermissionHelper { tryWithDefaultCatch { rxPermission .requestEachCombined( - Manifest.permission.READ_PHONE_STATE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE ) @@ -205,36 +158,37 @@ object PermissionHelper { @SuppressLint("CheckResult") @JvmStatic fun checkReadPhoneStatePermissionBeforeAction(context: Context, emptyCallback: EmptyCallback) { - if (context is FragmentActivity) { - - if (context.checkCallingOrSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) { - emptyCallback.onCallback() - } else { - val rxPermission = RxPermissions(context) - - tryWithDefaultCatch { - rxPermission - .requestEachCombined(Manifest.permission.READ_PHONE_STATE) - .subscribe { permission -> - when { - permission.granted -> { - emptyCallback.onCallback() - val provider = ARouter.getInstance().build(RouteConsts.provider.activation).navigation() as? IActivationProvider - provider?.sendActivationInfo() - } - permission.shouldShowRequestPermissionRationale -> { - // do nothing - } - else -> { - val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) - intent.data = Uri.parse("package:" + context.getPackageName()) - context.startActivity(intent) - } - } - } - } - } - } + emptyCallback.onCallback() +// if (context is FragmentActivity) { +// +// if (context.checkCallingOrSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) { +// emptyCallback.onCallback() +// } else { +// val rxPermission = RxPermissions(context) +// +// tryWithDefaultCatch { +// rxPermission +// .requestEachCombined(Manifest.permission.READ_PHONE_STATE) +// .subscribe { permission -> +// when { +// permission.granted -> { +// emptyCallback.onCallback() +// val provider = ARouter.getInstance().build(RouteConsts.provider.activation).navigation() as? IActivationProvider +// provider?.sendActivationInfo() +// } +// permission.shouldShowRequestPermissionRationale -> { +// // do nothing +// } +// else -> { +// val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) +// intent.data = Uri.parse("package:" + context.getPackageName()) +// context.startActivity(intent) +// } +// } +// } +// } +// } +// } } /** diff --git a/module_core/build.gradle b/module_core/build.gradle index fd4c8f9379..8943ec8f9f 100644 --- a/module_core/build.gradle +++ b/module_core/build.gradle @@ -83,7 +83,7 @@ dependencies { exclude group: 'com.facebook.fresco' }) api "com.lahm.library:easy-protector-release:${easyProtector}" - api "io.sentry:sentry-android:4.3.0" + api "io.sentry:sentry-android:5.7.4" api "com.alibaba:arouter-api:$arouterVersion" kapt "com.alibaba:arouter-compiler:$arouterVersion" diff --git a/module_core/src/main/java/com/gh/gamecenter/core/utils/RunningUtils.java b/module_core/src/main/java/com/gh/gamecenter/core/utils/RunningUtils.java deleted file mode 100644 index ee66bc9cf9..0000000000 --- a/module_core/src/main/java/com/gh/gamecenter/core/utils/RunningUtils.java +++ /dev/null @@ -1,132 +0,0 @@ -package com.gh.gamecenter.core.utils; - -import android.Manifest; -import android.app.ActivityManager; -import android.app.ActivityManager.RunningAppProcessInfo; -import android.app.ActivityManager.RunningTaskInfo; -import android.content.ComponentName; -import android.content.Context; -import androidx.annotation.RequiresPermission; - -import java.util.List; - -public class RunningUtils { - - /** - * 判断当前应用程序处于前台还是后台 - */ - @RequiresPermission(Manifest.permission.GET_TASKS) - public static boolean isApplicationBroughtToBackground(Context context) { - ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); - List tasks = am.getRunningTasks(1); - if (!tasks.isEmpty()) { - ComponentName topActivity = tasks.get(0).topActivity; - if (!topActivity.getPackageName().equals(context.getPackageName())) { - return true; - } - } - return false; - - } - - /** - * 判断当前应用程序处于前台还是后台 - */ - public static boolean isBackground(Context context) { - ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); - List appProcesses = activityManager.getRunningAppProcesses(); - for (RunningAppProcessInfo appProcess : appProcesses) { - if (appProcess.processName.equals(context.getPackageName())) { - if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_BACKGROUND) { - return true; - } else { - return false; - } - } - } - return false; - } - - /** - * 判断当前topactivity是否与传入的相同 - */ - @RequiresPermission(Manifest.permission.GET_TASKS) - public static boolean isEqualsTop(Context context, String activityName) { - ActivityManager activityManager = (ActivityManager) context - .getSystemService(Context.ACTIVITY_SERVICE); - List infos = activityManager.getRunningTasks(100); - for (RunningTaskInfo info : infos) { - if (info.topActivity.getClassName().equals(activityName)) { - return true; - } - } - return false; - } - - /** - * 判断当前baseActivity是否与传入的相同 - */ - @RequiresPermission(Manifest.permission.GET_TASKS) - public static boolean isEqualsBase(Context context, String activityName) { - ActivityManager activityManager = (ActivityManager) context - .getSystemService(Context.ACTIVITY_SERVICE); - List infos = activityManager.getRunningTasks(100); - for (RunningTaskInfo info : infos) { - if (info.baseActivity.getClassName().equals(activityName)) { - return true; - } - } - return false; - } - - /** - * 判断应用是否正在运行 - */ - @RequiresPermission(Manifest.permission.GET_TASKS) - public static boolean isRunning(Context context) { - ActivityManager activityManager = (ActivityManager) context - .getSystemService(Context.ACTIVITY_SERVICE); - List infos = activityManager.getRunningTasks(100); - for (RunningTaskInfo info : infos) { - if (info.topActivity.getPackageName().equals(context.getPackageName()) - && info.baseActivity.getPackageName().equals(context.getPackageName())) { - return true; - } - } - return false; - } - - /** - * 获取当前baseActivity - */ - @RequiresPermission(Manifest.permission.GET_TASKS) - public static String getBaseActivity(Context context) { - ActivityManager activityManager = (ActivityManager) context - .getSystemService(Context.ACTIVITY_SERVICE); - List infos = activityManager.getRunningTasks(100); - for (RunningTaskInfo info : infos) { - if (info.baseActivity.getPackageName().equals(context.getPackageName())) { - return info.baseActivity.getClassName(); - } - } - return null; - } - - /** - * 获取当前topActivity - */ - @RequiresPermission(Manifest.permission.GET_TASKS) - public static String getTopActivity(Context context) { - ActivityManager activityManager = (ActivityManager) context - .getSystemService(Context.ACTIVITY_SERVICE); - List infos = activityManager.getRunningTasks(100); - for (RunningTaskInfo info : infos) { - if (info.topActivity.getPackageName().equals( - context.getPackageName())) { - return info.topActivity.getClassName(); - } - } - return null; - } - -} diff --git a/module_core/src/main/java/com/gh/gamecenter/core/utils/SentryHelper.kt b/module_core/src/main/java/com/gh/gamecenter/core/utils/SentryHelper.kt index 4d7e82c8fc..03beb91ad4 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/utils/SentryHelper.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/utils/SentryHelper.kt @@ -25,7 +25,7 @@ object SentryHelper { val key = kv[i - 1] val value = kv[i] if (!TextUtils.isEmpty(key) && !TextUtils.isEmpty(value)) { - sentryEvent.setTag(key, value) + sentryEvent.setTag(key!!, value!!) if (BuildConfig.DEBUG && isContainChinese(key)) { throw RuntimeException("tag-key 不支持中文") } diff --git a/module_login/src/main/java/com/gh/gamecenter/login/utils/LoginHelper.kt b/module_login/src/main/java/com/gh/gamecenter/login/utils/LoginHelper.kt index 485cbba03f..6f2e630600 100644 --- a/module_login/src/main/java/com/gh/gamecenter/login/utils/LoginHelper.kt +++ b/module_login/src/main/java/com/gh/gamecenter/login/utils/LoginHelper.kt @@ -175,15 +175,6 @@ object LoginHelper { // 微博登录 @JvmStatic fun loginWithWeibo(loginCallback: LoginCallback, context: Activity) { - - tryWithDefaultCatch { - if (SPUtils.getBoolean(Constants.SP_USER_NEED_WEIBO_X86_SO)) { - SentryHelper.onEvent( - "weibo_sdk_login_error", - "exception_digest", "no_x86_so"); - } - } - mWBAPI = WBAPIFactory.createWBAPI(context) //初始化微博分享 mLoginCallback = loginCallback val config = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider diff --git a/module_login/src/main/java/com/gh/gamecenter/login/utils/QuickLoginHelper.kt b/module_login/src/main/java/com/gh/gamecenter/login/utils/QuickLoginHelper.kt index cd634456f4..3cc81d2847 100644 --- a/module_login/src/main/java/com/gh/gamecenter/login/utils/QuickLoginHelper.kt +++ b/module_login/src/main/java/com/gh/gamecenter/login/utils/QuickLoginHelper.kt @@ -116,28 +116,30 @@ object QuickLoginHelper { initTokenListener(context) } - if (context.checkCallingOrSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) { - loginAuth(context) - } else { - showQuickLoginPermissionDialog( - context, - { - checkReadPhoneStatePermissionBeforeAction(context, object : EmptyCallback { - override fun onCallback() { - loginAuth(context) - } - }) - }, - { - startCodeLoginPage( - context, - entrance = ENTRANCE_PERMISSION_DIALOG, - isFinishAuth = false, - isFromPermission = true - ) - } - ) - } + loginAuth(context) + +// if (context.checkCallingOrSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) { +// loginAuth(context) +// } else { +// showQuickLoginPermissionDialog( +// context, +// { +// checkReadPhoneStatePermissionBeforeAction(context, object : EmptyCallback { +// override fun onCallback() { +// loginAuth(context) +// } +// }) +// }, +// { +// startCodeLoginPage( +// context, +// entrance = ENTRANCE_PERMISSION_DIALOG, +// isFinishAuth = false, +// isFromPermission = true +// ) +// } +// ) +// } } @JvmStatic diff --git a/module_login/src/main/java/com/gh/gamecenter/login/view/LoginFragment.java b/module_login/src/main/java/com/gh/gamecenter/login/view/LoginFragment.java index 76ac021687..104f939d76 100644 --- a/module_login/src/main/java/com/gh/gamecenter/login/view/LoginFragment.java +++ b/module_login/src/main/java/com/gh/gamecenter/login/view/LoginFragment.java @@ -296,18 +296,18 @@ public class LoginFragment } private void showPermissionDialog() { - if (requireContext().checkCallingOrSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) { +// if (requireContext().checkCallingOrSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) { startQuickLogin(); - } else { - QuickLoginHelper.showQuickLoginPermissionDialog( - requireContext(), - () -> { - PermissionHelper.checkReadPhoneStatePermissionBeforeAction(requireContext(), this::startQuickLogin); - return null; - }, - () -> null - ); - } +// } else { +// QuickLoginHelper.showQuickLoginPermissionDialog( +// requireContext(), +// () -> { +// PermissionHelper.checkReadPhoneStatePermissionBeforeAction(requireContext(), this::startQuickLogin); +// return null; +// }, +// () -> null +// ); +// } } private void startQuickLogin() {