【发布时间】:2018-08-21 05:52:59
【问题描述】:
我已经从服务器下载了 apk 文件,现在正在安装它,但它给了我一个错误:通过 Intent.getData() 暴露在应用之外
我的代码是
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() +
"/download/" + "in.sample.myapp.apk")), "application/vnd.android.package-archive");
我已经搜索了错误并找到了一些但无法解决问题。建议是使用 FileProvider。我这样做只是为了检查日志
Log.d("NewPath", "NewPathName is: " +(FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".provider",outputFile)));
可以帮助解决这个问题。
请帮助和建议。
【问题讨论】:
-
共享两种情况的日志
-
您需要将
Intent上的Uri.fromFile()替换为从FileProvider.getUriForFile()返回的Uri。只是在某个任意位置调用FileProvider.getUriForFile()并不能修复该异常。 -
@MikeM。谢谢,我已经替换了下面的代码 'intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/download/" + "in.sample.myapp.apk")), "application/vnd.android.包存档");'用'intent.setDataAndType(FileProvider.getUriForFile(context,BuildConfig.APPLICATION_ID + ".provider",outputFile), "application/vnd.android.package-archive");'错误日志'尝试在空对象引用上调用虚拟方法'android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager,java.lang.String)'跨度>
-
您是否完全设置了
FileProvider?它不仅仅是调用getUriForFile()方法。 developer.android.com/reference/android/support/v4/content/…
标签: android