關於Android 8.0適配應用內部升級適配

關於Android 8.0適配應用內部升級適配

最近對應用作了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

相關文章
相關標籤/搜索