android 8不明なソースappインストール
7833 ワード
android 8不明なソースappインストール
Android8.0の多くの新しいプロパティには、不明なソースアプリケーション権限という非常に重要なプロパティがあります.
以前は不明なソースアプリケーションをインストールするときにポップアップウィンドウがポップアップされ、ユーザーが許可または拒否を設定し、許可に設定した後、すべての不明なソースアプリケーションをインストールすることができます.
Android8.0の変化は、未知のアプリケーションのインストール権限のスイッチが除去され、代わりに未知のソースアプリケーションの管理リストが削除され、各アプリケーションの未知のソースのインストール権限が開く必要があることです.Googleは、最初からまともなアプリケーションがアップグレードを通じて不法なことをし、ユーザーの権益を侵害することを防止するためだ.あなたのアプリケーションがAndroid 8に直接適していると、内部起動アプリケーションのインストールがブロックされ、この未知のソースの権限を処理しないと、アプリケーションが更新できず、アプリケーション市場で再ダウンロードするしかありません.
適切なandroid 8.0:
1.インベントリファイルに権限を追加する必要があります.
3、具体的な操作は:dialogをポップアップし、ユーザーに知らせる
posted @
2019-01-24 09:31 YOUNG++読書(
...) コメント(
...) コレクションの編集
Android8.0の多くの新しいプロパティには、不明なソースアプリケーション権限という非常に重要なプロパティがあります.
以前は不明なソースアプリケーションをインストールするときにポップアップウィンドウがポップアップされ、ユーザーが許可または拒否を設定し、許可に設定した後、すべての不明なソースアプリケーションをインストールすることができます.
Android8.0の変化は、未知のアプリケーションのインストール権限のスイッチが除去され、代わりに未知のソースアプリケーションの管理リストが削除され、各アプリケーションの未知のソースのインストール権限が開く必要があることです.Googleは、最初からまともなアプリケーションがアップグレードを通じて不法なことをし、ユーザーの権益を侵害することを防止するためだ.あなたのアプリケーションがAndroid 8に直接適していると、内部起動アプリケーションのインストールがブロックされ、この未知のソースの権限を処理しないと、アプリケーションが更新できず、アプリケーション市場で再ダウンロードするしかありません.
適切なandroid 8.0:
1.インベントリファイルに権限を追加する必要があります.
2、私たちはまたコードの中で権限を処理する必要があります.まずcanRequestPackageInstalls()方法であなたのアプリケーションにこの権限があるかどうかを判断します.3、具体的な操作は:dialogをポップアップし、ユーザーに知らせる
“ , ”
次に、ユーザーは「OK」をクリックし、不明なソースアプリケーション権限管理リストにジャンプします.Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES);
startActivityForResult(intent, 10086);
次に、onActivity Resultで結果を受信します.if (resultCode == RESULT_OK && requestCode == 10086) {
installProcess();// ,
}
完全なプロセスは次のとおりです. //
private void installProcess() {
boolean haveInstallPermission;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
//
haveInstallPermission = getPackageManager().canRequestPackageInstalls();
if (!haveInstallPermission) {//
DialogUtils.showDialog(this, " , ",
new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startInstallPermissionSettingActivity();
}
}
}, null);
return;
}
}
// ,
installApk(apk);
}
@RequiresApi(api = Build.VERSION_CODES.O)
private void startInstallPermissionSettingActivity() {
Uri packageURI = Uri.parse("package:" + getPackageName());
// 8.0 API
Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, packageURI);
startActivityForResult(intent, 10086);
}
//
private void installApk(File apk) {
Intent intent = new Intent(Intent.ACTION_VIEW);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
intent.setDataAndType(Uri.fromFile(apk), "application/vnd.android.package-archive");
} else {//Android7.0 uri contentProvider
Uri uri = AppCommonUtils.getUriFromFile(getBaseContext(), apk);
intent.setDataAndType(uri, "application/vnd.android.package-archive");
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getBaseContext().startActivity(intent);
}
または public void checkPermission(){
boolean haveInstallPermission;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
haveInstallPermission = getPackageManager().canRequestPackageInstalls();
if(!haveInstallPermission){
// ;
Uri packageURI = Uri.parse("package:" + getPackageName());
Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, packageURI);
startActivityForResult(intent, 10086);
}else{
// , ;
}
}else{
// android , ;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && requestCode == 10086) {
// , ;
}
}
posted @
2019-01-24 09:31 YOUNG++読書(
...) コメント(
...) コレクションの編集