您的位置:首页 > 移动开发 > Android开发

Android 兼容8.0 系统 安装apk 未知包

2018-03-21 17:40 579 查看

随着系统升级,兼容不同的系统必备

自动更新后安装

注册权限

<!-- 请求安装权限 8.0 -->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />


7.0 私有权限问题

http://blog.csdn.net/u013243573/article/details/54426063



8.0 允许安装未知应用

boolean isGranted(String permission) {
// 8.0 权限 安装apk 权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
return getActivity().getPackageManager().canRequestPackageInstalls();
}
return true;
}

//权限不存在,申请权限,并跳到当前包
if(!isGranted()){
Uri packageURI = Uri.parse("package:" + getContext().getPackageName());
Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, packageURI);
startActivityForResult(intent, 100001);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 100001) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// 同意以后 进行安装
}
}
}

/**
* 安装apk
*/
public static void installApk(Activity activity, File apkFile){
Intent intent = new Intent(Intent.ACTION_VIEW);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
} else {
// 声明需要的临时权限
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
// 第二个参数,即第一步中配置的authorities
String packageName = activity.getApplication().getPackageName();
Uri contentUri = FileProvider.getUriForFile(activity, packageName + ".fileProvider", apkFile);
intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
}
activity.startActivity(intent);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 8.0 7.0 安装 apk