今天遇到了个问题,app要升级,下载完apk后打开安装界面时崩溃了。经过网上查看,找到了解决办法:
1、在AndroidManifest下的application节点下添加如下代码:
<provider android:name="android.support.v4.content.FileProvider" android:authorities="hylk.com.xiaochekaoqin" android:exported="false" android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" />
</provider>
android:authorities为自己的app包名即可。
2、在 res/xml文件夹下添加file_paths.xml文件
文件里的内容如下:
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path path="Android/data/app包名/" name="files_root" /> <external-path path="." name="external_storage_root" /> </paths>
其中第一个path里的目录换成自己的包名
3、在代码中添加如下代码,用来打开apk到安装界面:
private void openFile(File file) { Intent intent = new Intent(Intent.ACTION_VIEW); Uri data; // 判断版本大于等于7.0 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { // "net.csdn.blog.ruancoder.fileprovider"即是在清单文件中配置的authorities data = FileProvider.getUriForFile(this, "hylk.com.xiaochekaoqin", file); // 给目标应用一个临时授权 intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); } else { data = Uri.fromFile(file); } intent.setDataAndType(data, "application/vnd.android.package-archive"); startActivity(intent);}
其中
FileProvider.getUriForFile(this, "hylk.com.xiaochekaoqin", file);的第二个参数为自己的包名和1里的一样即可。
// ------------------------------------------------
以上三步完成后,即可在android7.0的手机上升级安装apk
具体可参考其他博主的详细解答:
http://www.cnblogs.com/yongdaimi/p/6067319.html