最近對應用作了8.0適配,主要是對容許未知來源應用的安裝作了適配。到目前爲止8.0系統之後,設置裏面再也找不到了容許未知來源安裝的開關,由於goole不但願一次受權終身使用,這對一些惡意軟件可讓用戶知情,在安全上作了優化。那咱們看看如今8.0是怎麼作的操做,8.0之後,應用內升級安裝應用,都必須去容許未知來源應用安裝打開開關,而後才能進行安裝。android
獲取到本應用是否容許未知來源安裝api
true 能夠進行安裝,false 須要進行申請權限,申請容許未知來源應用安裝和咱們往常申請特殊權限不同,申請這個權限須要跳轉到相應的權限容許頁面進行申請,不然沒法安裝應用,獲得官方應用商店才能對應用進行升級。安全
haveInstallPermission = getPackageManager().canRequestPackageInstalls();
複製代碼
申請容許未知來源應用安裝bash
@RequiresApi(api = Build.VERSION_CODES.O)
private void startInstallPermissionSettingActivity() {
Uri packageURI = Uri.parse("package:"+this.getPackageName());
Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES,packageURI);
startActivityForResult(intent, REQUEST_UPDATE_PERMISSION_CODE);
}
複製代碼
必須加上packageURI,否則只能跳轉到權限管理列表,那樣對回調沒法處理。ide
最後咱們要在onActivityResult()方法中進行是否容許結果的處理。優化
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (REQUEST_UPDATE_PERMISSION_CODE == requestCode) {
boolean haveInstallPermission = false;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
haveInstallPermission = getPackageManager().canRequestPackageInstalls();
if (mUpdate != null && haveInstallPermission) {
AppUpgradeMannager.getInstance(AboutUsBeaconActivity.this).startDown(mUpdate);
} else if (!haveInstallPermission) {
showToast("安裝應用須要打開未知來源權限,請去設置中開啓權限");
}
}
}
}
}
複製代碼
好了,8.0的部分適配已經作好了,有了這份適配文檔,不再擔憂應用在8.0系統上安裝不了哈哈哈😂ui