问题 :在 Android7.0系统使用Intent跳转到APK安装时候遇到的错误
了解:Android7.0 系统权限更改
为了提高私有文件的安全性,面向 Android 7.0 或更高版本的应用私有目录被限制访问 (0700)。此设置可防止私有文件的元数据泄漏,如它们的大小或存在性。此权限更改有多重副作用:
私有文件的文件权限不应再由所有者放宽,为使用 MODE_WORLD_READABLE
和/或 MODE_WORLD_WRITEABLE而进行的此类尝试将触发 SecurityException。
传递软件包网域外的 file:// URI 可能给接收器留下无法访问的路径。因此,尝试传递 file://URI 会触发 FileUriExposedException。分享私有文件内容的推荐方法是使用 FileProvider。
DownloadManager不再按文件名分享私人存储的文件。旧版应用在访问 COLUMN_LOCAL_FILENAME时可能出现无法访问的路径。面向 Android 7.0 或更高版本的应用在尝试访问 COLUMN_LOCAL_FILENAME时会触发 SecurityException。通过使用 [DownloadManager.Request.setDestinationInExternalFilesDir()](https://developer.android.google.cn/reference/android/app/DownloadManager.Request.html#setDestinationInExternalFilesDir(android.content.Context, java.lang.String, java.lang.String)或 [DownloadManager.Request.setDestinationInExternalPublicDir()](https://developer.android.google.cn/reference/android/app/DownloadManager.Request.html#setDestinationInExternalPublicDir(java.lang.String, java.lang.String))将下载位置设置为公共位置的旧版应用仍可以访问 COLUMN_LOCAL_FILENAME中的路径,但是我们强烈反对使用这种方法。对于由 DownloadManager公开的文件,首选的访问方式是使用[ContentResolver.openFileDescriptor()](https://developer.android.google.cn/reference/android/content/ContentResolver.html#openFileDescriptor(android.net.Uri, java.lang.String))。
如果7.0之前intent跳转
Intent i =new Intent(Intent.ACTION_VIEW);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setDataAndType(Uri.parse("file://" + file.toString()), "application/vnd.android.package-archive");
startActivity(i);
android 7.0之后可以参考 https://blog.csdn.net/qq_30548105/article/details/79551068
最重要的来了,我们运行遇到的Manifest merger failed with multiple errors, see logs问题
我们在项目中有很多依赖 出现这个错 是因为我们的lib库的provider冲突
解决办法
之前我们清单文件里FileProvider配置是这么写的
怎么解决呢
我们需要自己创建一个类 MyFileProvider 继承 FileProvider
然后在清单文件里 修改配置
重新编译一下 这样问题就解决了 ,你的问题解决没?