Android7.0、8.0 apkインストール
2170 ワード
動的権限の構成
ファイルをダウンロードするにはダイナミック権限が必要です
リファレンスhttps://blog.csdn.net/qq_27400335/article/details/79412774
8.0の構成に必要な権限
(Android 8.0以降は未知のソースのapkを直接インストールすることはできません(google playに載っていないものはすべて未知のソースです))
権限の追加
着信apk File起動インストール
ファイルをダウンロードするにはダイナミック権限が必要です
リファレンスhttps://blog.csdn.net/qq_27400335/article/details/79412774
8.0の構成に必要な権限
(Android 8.0以降は未知のソースのapkを直接インストールすることはできません(google playに載っていないものはすべて未知のソースです))
権限の追加
apk( )
着信apk File起動インストール
public static void installAPK(Context context,File file){
try {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && Build.VERSION.SDK_INT< Build.VERSION_CODES.O) {
// 7.0 8.0
Log.i("TAG_Success","7.0+ ");
Uri apkUri = FileProvider.getUriForFile(context, " .fileProvider", file);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
//Android 8.0
// apk true- false-
boolean haveInstallPermission = context.getPackageManager().canRequestPackageInstalls();
Uri packageURI = Uri.parse("package:" + context.getPackageName());
if (!haveInstallPermission){
// ,
Intent intent2 = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES,packageURI);
context.startActivity(intent2);
}else {
Uri apkUri = FileProvider.getUriForFile(context, " ..fileProvider", file);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
}
}else {
// 7.0+
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
}
context.startActivity(intent);
}catch (Exception e){
}
}