android.content.ActivityNotFoundException:找不到处理Intent的Activity {act = android.intent.action.VIEW dat = content://

时间:2018-01-15 12:03:29

标签: android android-intent android-fileprovider

我为我的应用实施更新操作。 .apk文件夹下载WebService,我尝试手动它工作,但在程序后下载.apk文件夹无法启动。我得到错误设备尝试安装它"程序安装停止"我该如何解决?。

textarea {
    padding: 0;
}

4 个答案:

答案 0 :(得分:1)

在Android 7.0之前,您必须使用file Uri,例如来自Uri.fromFile()ACTION_VIEWACTION_INSTALL_PACKAGE来请求安装APK。

答案 1 :(得分:0)

这不是您的问题的答案,但为了防止发生这种崩溃,您可以检查是否有任何应用程序来处理intent如果没有为Intent创建选择器:

if (intent.resolveActivity(getPackageManager()) != null) {
    startActivity(intent);
} else {
    startActivity(Intent.createChooser(intent,"Chooser"));
}

答案 2 :(得分:0)

根据我的测试,使用ACTION_VIEW并不适用于所有手机。有些手机会抛出异常android.content.ActivityNotFoundException

尽管使用ACTION_INSTALL_PACKAGE已经可靠地使用了我迄今为止测试过的手机。

答案 3 :(得分:0)

我如何管理下载

if(Build.VERSION.SDK_INT < Build.VERSION_CODES.N){
            outputFile = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "ABC.apk")
        } else {
            outputFile = File(filesDir, "ABC.apk")
        }

安装时

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){
                    val installIntent = Intent(Intent.ACTION_INSTALL_PACKAGE)
                    Timber.e(intent.getStringExtra("uri"))
                    val apkFile = File(filesDir, "ABC.apk")
                    val apkURI = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".provider",
                            apkFile )
                    installIntent.setDataAndType(apkURI, "application/vnd.android.package-archive")
                    installIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
                    installIntent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
                    startActivity(installIntent)
                } else {
                    val installIntent = Intent(Intent.ACTION_VIEW)
                    installIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
                    Timber.e(intent.getStringExtra("uri"))
                    installIntent.setDataAndType(Uri.parse(intent.getStringExtra("uri")),
                            "application/vnd.android.package-archive")
                }

在provider_paths.xml中

<?xml version="1.0" encoding="utf-8"?> <paths> <files-path name="file_paths" path="."/> </paths>