android 6.0中增加了 執行時permissions,就是說可以在執行時判斷有無許可權和獲取許可權,讓使用者同意即可。
在之前的版本都是安裝的時候就會要使用者同意各種許可權,現在是在用的時候,回去問使用者同意。
下面介紹一下我們應用在適配6.0的時候,需要做哪些事情吧,
許可權新增
這個和之前的做法沒有區別:在androidmanifest中新增
在你宣告許可權之後,系統的行為取決於你許可權的敏感程度,如果這個許可權沒有影響到使用者隱私,系統會自動同意你的許可權,如果許可權可能影響使用者隱私,那系統就會去徵詢使用者的同意了,
檢查許可權
如果你需要乙個危險的許可權,就必須每次都檢查你是否已經有許可權了,所以如果有許可權了,我們直接使用就可以了,如果沒有那麼就申請就好了
int permissioncheck = contextcompat.checkselfpermission(thisactivity,
manifest.permission.write_calendar);
返回值就是是否已經有許可權了,如果返回值是
packagemanager.permission_granted,就證明有許可權了,如果返回
packagemanager.
permission_denied,那就證明還沒有許可權呢,
這是我們就要自己去申請
申請許可權
activitycompat.requestpermissions(thisactivity,
new string,
my_permissions_request_read_contacts);
呼叫這個方法之後,會彈出乙個標準的dialog,這個是不能被我們自定義的啊,長啥死樣就看各個廠商了。
但是呢,我們可以在彈框之前,單獨彈乙個視窗,來告訴為什麼要申請許可權,然後再去彈這個系統框,這樣使用者就會更加了解你為什麼需要這個許可權了。
所以我們的完整**如下:
// here, thisactivity is the current activity
if (contextcompat.checkselfpermission(thisactivity,
manifest.permission.read_contacts)
!= packagemanager.permission_granted) else ,
my_permissions_request_read_contacts);
// my_permissions_request_read_contacts is an
// result of the request.
}}
上面的大多數方法,我們都已經講過了,根據注釋,也理解了每一段都幹了什麼,
唯一需要額外說一下的是
activitycompat.shouldshowrequestpermissionrationale()
上面是google說的幾點,下面我再解釋**話,就是說:
我們第一次呼叫這裡,肯定是返回false的,就會彈出來系統彈框,問你同不同意啊,
如果你同意了,以後就沒這裡什麼事了
如果要是不同意呢,以後就會返回true,
那咱們就得彈個框,告訴使用者問什麼要許可權,最好再有個同意按鈕
Android 6 0新特性之Doze模式
doze模式可以極大幅度延長電池的使用壽命。我將從程式設計時的一些注意事項入手講解。1.什麼是doze模式 如果該裝置未插接電源,處於靜止狀態 android7.0中刪除這一條件 且螢幕關閉了一段時間之後就會進入到doze模式。在doze模式下,系統會對cpu,網路,alarm等活動進行限制,從而延...
android6 0新特性 電源節能
從android 6.0 api級別23 android介紹兩個節電功能,通過管理裝置沒有連線電源時應用的行為 休眠時減少電池消耗通過延遲背景cpu和網路活動時應用裝置是閒置很長一段時間。應用備用延緩背景網路活動應用程式的使用者最近沒有互動。休眠和應用程式備份管理行為的應用程式執行在android ...
Android 6 0許可權管理
android 6.0在我們原有的androidmanifest.xml宣告許可權的基礎上,又新增了執行時許可權動態檢測,以下許可權都需要在執行時判斷 身體感測器 日曆攝像頭 通訊錄地理位置 麥克風 簡訊儲存空間 if contextcompat.checkselfpermission this,m...