編輯:關於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
如有問題和錯誤的地方請指出。
在做搜芽的過程中,發現那個外包人緣做的不行,因為啟動的時候會停頓,然後白屏一會,聯想到幾個月前我在我的三僚企業通信軟件裡面拉起9K-Mail的時候也會黑屏,所以決定學習一
launcher,也就是Android的桌面應用程序。下圖是我正在使用的魅族手機的launcher應用程序: 接下來我們要開發一個自己的launcher,使其替
從開源項目中看到 這個,就不由自主的收藏了~
本文實例分析了Android開發之TimePicker控件用法。分享給大家供大家參考,具體如下:新建項目:New Android Project->Project