关于 android 7.0 之前的 apk安装,需要注意设置 Intent.FLAG_ACTIVITY_NEW_TASK 就好
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri apkUri = Uri.fromFile(file);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
startActivity(intent);
Android 7.x APK安装
在 Android 7.0 引入了“私有目录被限制访问”,“StrictMode API 政策”。 Android 7.0 行为变更
” StrictMode API 政策” 是指禁止向你的应用外公开 file:// URI。使用上述方法安装APK时会出现 FileUriExposedException 异常。这个时候就需要使用FileProvider来解决这个问题:
步骤一 (FileProvider的申请),在Manifest.xml中定义一个FileProvider,代码如下:
<provider
android:name="android.support.v4.content.FileProvider" // 指向v4包里的FileProvider类
android:authorities="你的包名.FileProvider" // 对应你的content uri的基础域名,生成的uri将以content://你的包名.FileProvider作为开头
android:exported="false" // 设置不允许导出,我们的FileProvider应该是私