編輯:關於android開發
Android 6.0 Marshmallow首次加入了運行時權限管理,這對用戶來說,可以更好的了解、控 制 app 涉及到的權限。然而對開發者來說卻是一件比較蛋疼的事情,需要兼容適配,並保證程序功能的正常運行。
什麼叫運行時權限管理呢?在Android 6.0以下的系統中,當我們在安裝應用的時候,該應用就會提示我們這個應用所需要的權限,如果你要安裝,那就必須同意賦予所有權限,但是如果不同意,那就只能取消安裝了,有點流氓。而且安裝完後,你不可以收回這個權限。
而6.0就做到了運行時權限管理,即使安裝的時候給了權限,也可以到系統設置裡,去關閉該權限。
下面分幾種情況來講,因為運行時權限只有在Android6.0及以上的手機版本才有,所以這裡只考慮設備版本大於6.0的手機,低版本的手機在安裝時就已經賦予了所有的權限,也不可能收回,就不考慮了,下面的情況只分targetSdkVersion:
checkSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED
如果該權限已經被授予,那麼可繼續執行你的代碼,如果未授予,則需要向用戶詢問是否需要授予權限,彈出的框是系統界面,界面如下:
調用代碼:
requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, 1);
系統詢問是否授予權限的頁面結束後會有回調
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 1) {
if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
//your implementations
}else{
ToastUtil.show(this, "權限不足,支付失敗");
}
}
}
如果targetSdkVersion是小於23的,那麼將認為app沒有用23新權限測試過,那麼繼續使用老規則:系統在安裝的時候會默認給app賦予所有的權限,app可以照常運行。但是!但是!但是!用戶依然可以回收權限,不過此回收非彼回收。先看下關閉權限時彈的頁面:而且也支持同時申請多個權限,具體情況android developer官網。
下面是stackoverflow問題的網址:
http://stackoverflow.com/questions/36328151/ive-revoke-the-android-permission-but-checkselfpermission-still-return-granted
如有問題和錯誤的地方請指出。
LBS(Location Based Services),又稱位置服
【讀書筆記】【Android 開發藝術探索】第3章 View 的事件體系 一、 View 的基礎知識 View 是 Android 中所有空間的基類。 1、 View 的
單機搭建Android開發環境(五),單機搭建android開發 前文介紹了Android系統開發環境的搭建,本文將簡單介紹Android應用開發環境的搭建。 基於
Android逆向之旅---解析編譯之後的Resource.arsc文件格式 一、前言 快過年了,先提前祝賀大家新年快樂,這篇文章也是今年最後一篇了。今天我們繼續來看