【发布时间】:2018-06-06 10:52:59
【问题描述】:
我正在尝试在 android N 上安装 APK。 我使用以下代码:
File toInstall = new File(appDirectory, appName + ".apk");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Uri apkUri = FileProvider.getUriForFile(activity, BuildConfig.APPLICATION_ID + ".provider", toInstall);
Intent intent = new Intent(Intent.ACTION_INSTALL_PACKAGE);
intent.setData(apkUri);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
activity.startActivity(intent)
} else {
Uri apkUri = Uri.fromFile(toInstall);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
activity.startActivity(intent);
}
但我遇到以下错误:
FATAL EXCEPTION: Thread-5
Process: com.myapp.myapp, PID: 16557
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)' on a null object reference
at android.support.v4.content.FileProvider.parsePathStrategy(FileProvider.java:583)
at android.support.v4.content.FileProvider.getPathStrategy(FileProvider.java:557)
at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:399)
at ir.myapp.picwriter.service.MyService$1.run(MyService.java:57)
at java.lang.Thread.run(Thread.java:761)
这一行的错误是什么:
Uri apkUri = FileProvider.getUriForFile(activity, BuildConfig.APPLICATION_ID + ".provider", toInstall);
【问题讨论】:
-
IIRC,该错误意味着 Android 无法在清单中使用您指定的权限字符串找到您的
FileProvider。 -
@CommonsWare 那我该怎么办?
-
由于我看不到您的清单或您的
FileProvider元数据 XML 资源,我真的无法给您更多建议。如果您编辑您的问题并将其添加到其中,也许我们可以指出要更改的内容。 -
@CommonsWare 我的清单中没有
FileProvider或任何FileProvider我只是从stackoverflow.com/a/40131196/7297151 复制代码并搜索错误但我无法得到任何答案所以我问了一个问题.
标签: java android android-intent