1. 程式人生 > >Android各大手機系統打開權限管理頁面

Android各大手機系統打開權限管理頁面

tac 沒有 system tcl 項目 activity all activiti oca

最近項目上比較忙,終於有空閑時間寫寫東西了。

相信做過Android的都知道,現在的手機系統五花八門,當我們去請求用戶的權限的時候,總是會彈出是否允許的對話框。

而且用戶一旦不小心點了拒絕,下次就不再詢問了,而很多小白用戶也不知道怎麽去設置。這就導致了很不好的用戶體驗。

經過研究,我發現像小米,魅族,這些滿大街的系統,都是可以通過隱式意圖打開權限設置頁面的。

這裏指的是自身app的權限管理頁面

之前已經有人寫過類似的文章,不過都比較分散,我這裏把這些方法總結了一下。

不多說,直接上代碼。

首先是最蛋疼的小米,百度了很多前輩留下的方法,發現都不能打開,沒有辦法,只能通過 adb dumpsys activity activities 命令去查看

經過一番研究終於打開了。

/** 
 * 跳轉到miui的權限管理頁面 
 */  
private void gotoMiuiPermission() {  
    Intent i = new Intent("miui.intent.action.APP_PERM_EDITOR");  
    ComponentName componentName = new ComponentName("com.miui.securitycenter", "com.miui.permcenter.permissions.AppPermissionsEditorActivity");  
    i.setComponent(componentName);  
    i.putExtra(
"extra_pkgname", getPackageName()); try { startActivity(i); } catch (Exception e) { e.printStackTrace(); gotoMeizuPermission(); } }

接下來上魅族的代碼

/** 
 * 跳轉到魅族的權限管理系統 
 */  
private void gotoMeizuPermission() {  
    Intent intent = new Intent("
com.meizu.safe.security.SHOW_APPSEC"); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.putExtra("packageName", BuildConfig.APPLICATION_ID); try { startActivity(intent); } catch (Exception e) { e.printStackTrace(); gotoHuaweiPermission(); } }

華為的系統由於不太一樣,有些系統是華為自己的權限管理,而6.0的是用的原生的權限管理頁面,目前手上只有一臺6.0的華為手機,

暫時沒有研究到打開的方法,如果有知道的大神麻煩告知一下

不過打不開沒關系,我們可以退而求其次,打開所用應用的權限管理頁面

/** 
 * 華為的權限管理頁面 
 */  
private void gotoHuaweiPermission() {  
    try {  
        Intent intent = new Intent();  
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
        ComponentName comp = new ComponentName("com.huawei.systemmanager", "com.huawei.permissionmanager.ui.MainActivity");//華為權限管理  
        intent.setComponent(comp);  
        startActivity(intent);  
    } catch (Exception e) {  
        e.printStackTrace();  
        startActivity(getAppDetailSettingIntent());  
    }  
  
}  

目前也就研究了這三大系統,對於原生系統,和其他系統,如果找不到方法,也可以先把用戶引導到系統設置頁面

/** 
 * 獲取應用詳情頁面intent 
 * 
 * @return 
 */  
private Intent getAppDetailSettingIntent() {  
    Intent localIntent = new Intent();  
    localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
    if (Build.VERSION.SDK_INT >= 9) {  
        localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");  
        localIntent.setData(Uri.fromParts("package", getPackageName(), null));  
    } else if (Build.VERSION.SDK_INT <= 8) {  
        localIntent.setAction(Intent.ACTION_VIEW);  
        localIntent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails");  
        localIntent.putExtra("com.android.settings.ApplicationPkgName", getPackageName());  
    }  
    return localIntent;  
}  

獲取到intent之後直接startactivity就好了。。。

造詣不夠,就只知道這麽多了,歡迎各位大牛補充!

Android各大手機系統打開權限管理頁面