1. 程式人生 > >Android調app許可權設定介面(適配各大手機廠商終極版本)

Android調app許可權設定介面(適配各大手機廠商終極版本)

背景:        眾所周知,國內的android是在google之上,各大手機廠商加了一層,諸如MIUI、EUI,之類的系統。因此在我們開發過程中想調出某應用的許可權設定頁面,調出的是google原生的許可權控制介面,但是我們在此頁授予應用許可權後,實際上應用還是沒有許可權,只是在google眼裡,我已經給你許可權了。其實,是被手機廠商系統給攔截了,通俗來講,中國的手機廠商覺得原生的不好看,或者突出自己系統等原因,會在原生之上加一個殼子,有些東西原生可以決定,有些東西,原生決定了沒有用,還是要殼子同意才行。目的:            因此我們想跳轉的是各大手機廠商系統的應用許可權設定介面,這就需要知道類名+包名,而且各大手機廠商的類名+包名肯定不一樣,也不保證它們會一成不變。
華為:OK小米:OK錘子:OK一加:OKvivo:OK,vivo有自己的提示,再次點選後也是會跳出提示,有瑕疵,但是還可以oppo:OK,自己會提示魅族:暫時跳轉沒反應酷派:無6.0以上的版本笑哭中興:OK聯想:OKPS:總體來講,不敢保證肯定能跳過去的,可以採用捕獲異常的方式,是在調不到該應用的許可權管理頁,跳到該應用詳情頁也可以,反正就是要引導使用者在拒絕許可權後可以找到在哪授予許可權。當然我這裡採用的是startActivityForResult,返回時我想知道許可權是否已經授予,如果授予了,那麼繼續幹其他的事情,如果沒授予,那麼繼續提示。因為使用startActivityForResult若跳的是應用詳情頁,使用者再次點選許可權,其實已經跳出該活動了,再返回,再返回到我們的頁面,其實並沒有效果,因此考慮區分應用詳情頁和許可權詳情頁
最終確定方案:若開啟的是應用詳情頁,則在onResume中檢測許可權

核心程式碼:

    public static void GoToSetting(Activity activity){
        switch (Build.MANUFACTURER){
            case MANUFACTURER_HUAWEI://華為
                Huawei(activity);
                break;
            case MANUFACTURER_MEIZU://魅族
                Meizu(activity);
                break;
            case MANUFACTURER_XIAOMI://小米
                Xiaomi(activity);
                break;
            case MANUFACTURER_SONY://索尼
                Sony(activity);
                break;
            case MANUFACTURER_OPPO://oppo
                OPPO(activity);
                break;
            case MANUFACTURER_LG://lg
                LG(activity);
                break;
            case MANUFACTURER_LETV://樂視
                Letv(activity);
                break;
            default://其他
                try {//防止應用詳情頁也找不到,捕獲異常後跳轉到設定,這裡跳轉最好是兩級,太多使用者也會覺得麻煩,還不如不跳
                    openAppDetailSetting(activity);
//                    activity.startActivityForResult(getAppDetailSettingIntent(activity), PERMISSION_SETTING_FOR_RESULT);
                }catch (Exception e){
                    SystemConfig(activity);
                }
                break;
        }
    }

總體的思路是:嘗試跳應用許可權頁————>失敗------->應用詳情頁。儘量引導嘛

需要的同學可以下載工具類:

暫時想到的處理判斷授權結果的思路就是,應用許可權頁--->startActivityForResult    應用詳情頁--->resume中檢測

有更好的思路歡迎留言討論交流

相關推薦

Android調app許可權設定介面手機廠商終極版本

背景:        眾所周知,國內的android是在google之上,各大手機廠商加了一層,諸如MIUI、EUI,之類的系統。因此在我們開發過程中想調出某應用的許可權設定頁面,調出的是google原生的許可權控制介面,但是我們在此頁授予應用許可權後,實際上應用還是沒有許可

Android 跳轉許可權設定介面終極定製 ROM

▲ 前言: 當我們的使用者使用App時不小心拒絕了某項必要許可權,而導致無法正常使用。這時候希望重新去開啟該許可權,那麼問題來了,Android廠家定製的room五花八門,很多時候卻發現找不到許可權管理的入口。為了解決這一問題,如果我們應用中直接提供許可權管理入口給

JS手機的計算方式

<script type="text/javascript">     var deviceWidth = document.documentElement.clientWidth;  

android使用webview上傳檔案4.4以上系統

在版本迭代中需要上傳圖片做統計,把連結發QQ上,裡面的網頁可以正常上傳圖片,但是我們自己app裡不能上傳。查了一些相關資料 預設情況下,Android的webview是不支援<input type=file>的,點選沒有任何反應,如果希望點選上傳,彈出選擇檔案、

利用poi包裝一個簡單的Excel讀取器.一一個Reader並提供readLine方法

通常,讀文字我們會使用BufferedReader,它裝飾或者說管理了InputStreamReader,同時提供readLine()簡化了我們對文字行的讀取。就像從流水線上獲取產品一樣,每當取完一件後,它自動準備好下一件並等待我們獲取,一直到全部取完結束。所以我們的目標就是希望也能管理poi並提供一個rea

Android手機廠商開發文件

Android系統開源,使得市場競爭這一塊很大,各大手機廠商為了建立自己的特有風格,都去原有系統上修改,為了我們開發增大很懂難度,所以我們需要知道各大手機廠商的文件,方便我們去適配和相容我們的App; 一加、360等手機廠商,有的沒有,還有的沒找

Android app 線上更新那點事兒Android6.0、7.0、8.0

一、前言 app線上更新是一個比較常見需求,新版本釋出時,使用者進入我們的app,就會彈出更新提示框,第一時間更新新版本app。線上更新分為以下幾個步驟: 1, 通過介面獲取線上版本號,versionCode 2, 比較線上的versionCode 和本地的versi

關於Android 設定螢幕亮度Api23及更高版本

       這個需求應用場景主要是在有些頁面進入需要調節當前螢幕亮度,查詢相關資料都是api 23之前的,翻牆看了些文件,找到了解決方案,特此記錄下。     我們知道在api 23之後許可權需要動態去申請,但是有部分特殊許可權這樣是申請不到的,只有通過彈出設定窗口才能獲

Android app系統設定介面 資料的儲存與讀取 SharedPreferences 的正確使用

      很開心的是經歷過兩個多月的努力,專案在11月份即將要交付使用,基礎功能已經完成,剩下的是系統設定介面沒有開發完畢,如下圖:        很顯然要實現的功能是幾個介面要顯示很多資料,要依據某一項進行排序,當勾選的選項被選中時,選單切換到該介面時,就要按照這個欄

Android APP全面屏手機的技術要點

關於全面屏 全面屏是手機業界對於超高屏佔比手機設計的一個寬泛的定義。從字面上解釋就是,手機的正面全部都是螢幕,四個邊框位置都是採用無邊框設計,追求接近100%的屏佔比。但受限於目前的技術,還不能做到手機正面屏佔比100%的手機。現在業內所說的全面屏手機是指真實屏佔比可以達到80%以上,擁有超窄邊

Android 系統自帶圖片裁剪功能7.0、8.0、對了還有小米手機

前段時間寫了如何獲取相簿和拍照之後的照片並且進行顯示和上傳,這一次是如何進行圓形影象製作,經常看我寫的筆記的人會知道,我很懶。那麼我就懶的自定義了,目前需求就用原生的就好了,大神的輪子,我會在後面進行推薦。這篇筆記是依賴於:Android呼叫相簿、相機(相容6.0、7.0、8.0) 文

Android 呼叫相機、相簿6.0

又好久沒有寫部落格了,好習慣不能斷,該寫點就得寫點,今天帶來的筆記是關於Android 專案呼叫系統相機 與呼叫系統相簿的之後拿到照片的基本操作,我感覺好多人還是不太熟悉的哈。專案相容 Android 5.0裝置、Android 6.0裝置、Android 7.0、Android 8.0

Android 8.0 升級筆記圖片、通知欄、ContentProvider、Receiver

Android 8.0 升級筆記 前言 Google 在2017年就釋出了Android 8.0,並且強制AppStore上得應用都要升級,國內得不曉得。為了防止出現之前升級6.0 得時候許可權問題導致Crash這種情況得發生…這次很小心得去看了Google得升級意見,小夥伴們可以自

Android 一行程式碼版本更新到Android8.0

做Android 專案的時候一般都需要在App內版本更新,以前自己寫過,今天介紹的不是自己的,是一個開源,功能比較強大,一句話實現版本更新功能 一、依賴 compile 'com.allenliu.versionchecklib:library:2.0.5' 二、程式碼 AllenVer

SpringMVC攔截器:解決專案中介面url訪問許可權的問題通過url不能隨意訪問controller層

層次關係 攔截器實現HandlerInterceptor介面 package com.bybo.aca.web.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http

Android 安卓UI介面

安卓機器有各種尺寸,UI介面逐個適配比較麻煩。 UI介面自動適配 示例:             適配函式:AutoSize(View view, int w, int h, int DesignW, int DesignH) package sci.d

Android 版本更新7.0 xml配置

版本更新一般分兩種情況: 需要更新時跳轉到應用市場或者跳轉到瀏覽器處理 另一種情況則是在App內進行更新 第一種沒什麼好說的,本文主要是實現應用內進行更新 App內部更新分以下幾個步驟: 檢測App版本 下載Apk 安裝已下載完成的Apk 下面貼上例項: 1.

Android開發中實用API介面

1、Throwable介面中的getStackTrace()方法(或者Thread類的getStackTrace()方法),根據這個方法可以得到函式的逐層呼叫地址,其返回值為StackTraceElement[]; 2、StackTraceElement類,其中四個方法getClassName(),g

Android N及以上版本應用安裝包下載完成自動彈出安裝介面方法

Android N及以上版本應用安裝包下載完成自動彈出安裝介面的適配方法   在實現下載和安裝APP功能的時候在Android較高版本可能會遇到如下的問題: 安裝Apk時報錯:android.os.FileUriExposedException: file:///storag

RDIFramework.NET ━ .NET快速資訊化系統開發框架 V3.2-> Web版本新增新的使用者許可權設定介面效率更高、更規範

  在實際應用中我們會發現,許可權控制會經常變動,如:需要調整角色的分配,需要收回與授予某些角色、使用者可訪問的模組(選單)與相應的操作許可權、需要給某些角色新增與移除相應的使用者等等,如果沒有一個靈活可靠的配置管理工具將會使許可權控制變得十分麻煩。使用者授權管理模組就是為了方便使用者、角色許可權的集中統一管