You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

清除应用数据后首次启动异常求助(PiracyChecker相关)

解决方案

问题根源

PiracyChecker的start()方法是异步执行的。首次清除应用数据后,onResume方法会在PiracyChecker完成检查并写入SharedPreferences之前触发,此时pref3还是默认值false,导致跳转逻辑不执行,闪屏界面一直停留。第二次启动时,SharedPreferences已经保存了上次的检查结果,所以onResume能正常触发跳转。

修复方案

  • 改用PiracyChecker回调监听处理跳转
    放弃在onResume中读取SharedPreferences的方式,直接通过PiracyChecker的回调接口在检查完成后执行跳转,确保时机准确。修改后的代码如下:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
    
        new PiracyChecker(this)
                .addAppToCheck(apps)
                .enableGooglePlayLicensing(BuildConfig.LICENSE)
                .enableInstallerId(InstallerID.GOOGLE_PLAY)
                .enableUnauthorizedAppsCheck()
                .blockIfUnauthorizedAppUninstalled("pref1","pref2")
                .enableStoresCheck()
                .enableFoldersCheck()
                .enableEmulatorCheck(false)
                .enableDebugCheck()
                .display(Display.ACTIVITY)
                .saveResultToSharedPreferences("pref1", "pref3")
                .callback(new PiracyCheckerCallback() {
                    @Override
                    public void allow() {
                        // 检查通过,跳转主页面
                        startActivity(new Intent(SplashActivity.this, MainActivity.class));
                        finish();
                    }
    
                    @Override
                    public void dontAllow(@NonNull PiracyCheckerError error) {
                        // 检查不通过,处理盗版情况(比如显示提示后退出)
                        finish();
                    }
                })
                .start();
    }
    
    // 移除onResume中的SharedPreferences检查逻辑
    @Override
    protected void onResume() {
        super.onResume();
        // 不再需要这里的跳转逻辑
    }
    
  • 优化闪屏体验
    在闪屏布局activity_splash.xml中添加加载动画或提示文字(比如"正在验证..."),让用户感知到App在运行,避免误以为界面冻结。

  • 检查PiracyChecker配置合理性
    确认blockIfUnauthorizedAppUninstalled的参数是否符合需求,该方法会在未授权应用被卸载时阻止跳转,若配置不当可能导致不必要的阻塞。

内容的提问来源于stack exchange,提问作者Mahmoud Mohsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 09:54:33