首页 > 解决方案 > 使用包安装程序更新时应用程序崩溃

问题描述

类似问题:在 Android 10 设备上安装更新的 apk 并将相同的应用程序置于前台

我正在使用包安装程序来更新我的应用程序。Apk 存储在服务器上,如果有可用更新,应用程序会自动下载它。Apk 下载正常,应用程序也在后台更新。但是,当应用最后收到 PackageInstaller.STATUS_PENDING_USER_ACTION 的状态消息时,应用在 onNewIntent 函数中崩溃。

该应用程序应显示安装过程,但它崩溃了。但是,再次启动应用程序时,它已更新。

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        Bundle extras = intent.getExtras();
   
        if (PACKAGE_INSTALLED_ACTION.equals(intent.getAction())) {
            int status = extras.getInt(PackageInstaller.EXTRA_STATUS);
            String message = extras.getString(PackageInstaller.EXTRA_STATUS_MESSAGE);
            Log.i("shaheryar", "Status  is:" + status);
            switch (status) {
                case PackageInstaller.STATUS_PENDING_USER_ACTION:
                    Intent confirmIntent = (Intent) extras.get(Intent.EXTRA_INTENT);
                    startActivity(confirmIntent);
                    break;
                case PackageInstaller.STATUS_SUCCESS:
                    updateView.setVisibility(View.GONE);                  
                    navigateToLoginScreen();
                    break;
                case PackageInstaller.STATUS_FAILURE:                  
                   break;
                case PackageInstaller.STATUS_FAILURE_ABORTED:
                case PackageInstaller.STATUS_FAILURE_BLOCKED:                    
                   break;
                case PackageInstaller.STATUS_FAILURE_CONFLICT:                   
                    break;
                case PackageInstaller.STATUS_FAILURE_INCOMPATIBLE:                  
                    break;
                case PackageInstaller.STATUS_FAILURE_INVALID:                 
                    break;
                case PackageInstaller.STATUS_FAILURE_STORAGE:                   
                    break;
                default:
                
                    Toast.makeText(this, "Unrecognized status received from installer: " + status,
                            Toast.LENGTH_SHORT).show();
            }
        }
    }```
P.S. Additional Info: (If I run the app on my emulator by simply running it shows that there is a problem in signing certificate which is true as the Apk on the server is release while app runs on emulator Is debug). Which means that it returns back to newIntent function is there is Install conflict

标签: androidandroid-studioapkandroid-10.0

解决方案


推荐阅读