6.0系統(tǒng)全稱為Marshmallow姜胖,Google 2015年I/O大會上正式發(fā)布史汗,目前市場份額也在持續(xù)上漲仲闽,它有著眾多模塊的更新潮峦。
主要更新模塊
- 電源管理(Android6.0 引入了下列特性來延長電池使用時間)
- App Standby(應用待機)
- 檢測:當設備部充電疯特,且在這時間內(nèi)用戶沒有直接或間接的啟動該應用哗魂。
- 退出:當應用被激活時,或者設備充電時漓雅,系統(tǒng)將應用移除此狀態(tài)录别。
- Doze(瞌睡)
- 檢測:當設備不充電,且當設備靜止且滅屏一段時間邻吞。
- 周期:平臺嘗試讓系統(tǒng)處于休眠狀態(tài)组题,周期性地進入在一個維持窗口恢復正常操作,然后進入更長的休眠狀態(tài)抱冷。
- Exemptions(豁免)
預裝在設備上的系統(tǒng)應用和云消息服務管怠,默認通常被豁免潭陪。應用開發(fā)者可以要求其應用使用這種設定庙洼。用戶也可以在設置中來豁免某些應用栏赴。 - App Link
- 全稱為應用程序鏈接。
- 技術(shù)點:就是我們的隱式啟動Intent耿眉。
- Android更加鼓勵應用程序間的關(guān)聯(lián)而不再是單一的應用同瀏覽器的交互边翼。
- 指紋識別
- 6.0 以前一直由各個手機制造廠商去研發(fā)。導致指紋識別不同的手機差異巨大鸣剪。
- 6.0 以后由Android系統(tǒng)提供API组底,硬件廠商只需提供相應的硬件支持即可。
- 應用權(quán)限管理
- 5.0 以前筐骇,只需要在manifest.xml中注冊聲明即可债鸡。
- 5.0 以后,用戶可以在安裝的時候關(guān)閉某些權(quán)限铛纬。
- 6.0 及以后厌均,對于一些用戶隱私權(quán)限總是會在第一次提示用戶是否授予權(quán)限。
權(quán)限機制詳解
- 優(yōu)勢
- 新的權(quán)限機制更好的保護了用戶的隱私告唆。
- 給了程序向用戶說明權(quán)限的作用莫秆。
- 可以防止一些惡意程序盜取用戶或者手機信息,增強了Android系統(tǒng)的安全性悔详。
- 分類
- Normal Premission
- Dangerous Permission & Dangerous Premission Group
- 概念
如果你申請某個危險的權(quán)限,假設你的app早已被用戶授權(quán)了同一組的某個危險權(quán)限惹挟,那么系統(tǒng)會立即授權(quán)茄螃,而不需要用戶去點擊授權(quán)。 - 新增API
- ContextCompact.checkSelfPermission( 檢查當前APP是否具有某個權(quán)限)
- ActivityCompact.requestPermissions()(如果沒有某個權(quán)限连锯,就使用此方法申請權(quán)限归苍,由于ActivityCompact是繼承自ContextCompact用狱,所以也可以用ActivityCompact)
- onRequestPermissionsResult()(申請權(quán)限是異步的,這是個回調(diào)來處理用戶選擇的結(jié)果拼弃,如果用戶同意給權(quán)限夏伊,緊接著做授權(quán)成功的處理,若用戶不同意授權(quán)吻氧,做授權(quán)失敗的處理)
- ActivityCompact.shouldShowRequestPermissionRationale(給用戶解釋此權(quán)限的用途溺忧,在用戶拒絕授權(quán)才會出現(xiàn))
- 使用流程
- 在AndroidManifest中添加需要的權(quán)限(不可省,還要適配6.0以下的系統(tǒng))
- 檢查權(quán)限(檢測危險權(quán)限)
- 申請授權(quán)
- 處理權(quán)限申請回調(diào)
- Dangerous Permissions (危險權(quán)限都是一組一組的盯孙,如果申請某個危險的權(quán)限鲁森,假設app早已被用戶授權(quán)了同一組的某個危險權(quán)限,那么系統(tǒng)會立即授權(quán)振惰,而不需要用戶去點擊授權(quán)歌溉,注意,不要對權(quán)限組過多的依賴骑晶,盡可能對每個危險權(quán)限都進行正常流程的申請痛垛,因為誰知道后期的版本中這個權(quán)限組會不會發(fā)生點變化呢)
- group:android.permission-group.CONTACTS
- permission:android.permission.WRITE_CONTACTS
- permission:android.permission.GET_ACCOUNTS
- permission:android.permission.READ_CONTACTS
- group:android.permission-group.CONTACTS
- group:android.permission-group.PHONE
- permission:android.permission.READ_CALL_LOG
- permission:android.permission.READ_PHONE_STATE
- permission:android.permission.CALL_PHONE
- permission:android.permission.WRITE_CALL_LOG
- permission:android.permission.USE_SIP
- permission:android.permission.PROCESS_OUTGOING_CALLS
- permission:com.android.voicemail.permission.ADD_VOICEMAIL
- group:android.permission-group.CALENDAR
- permission:android.permission.READ_CALENDAR
- permission:android.permission.WRITE_CALENDAR
- group:android.permission-group.CAMERA
- permission:android.permission.CAMERA
- group:android.permission-group.SENSORS
- permission:android.permission.BODY_SENSORS
- group:android.permission-group.LOCATION
- permission:android.permission.ACCESS_FINE_LOCATION
- permission:android.permission.ACCESS_COARSE_LOCATION
- group:android.permission-group.STORAGE
- permission:android.permission.READ_EXTERNAL_STORAGE
- permission:android.permission.WRITE_EXTERNAL_STORAGE
- group:android.permission-group.MICROPHONE
- permission:android.permission.RECORD_AUDIO
- group:android.permission-group.SMS
- permission:android.permission.READ_SMS
- permission:android.permission.RECEIVE_WAP_PUSH
- permission:android.permission.RECEIVE_MMS
- permission:android.permission.RECEIVE_SMS
- permission:android.permission.SEND_SMS
- permission:android.permission.READ_CELL_BROADCASTS
- 代碼實踐
只要按照使用流程去在代碼中請求權(quán)限,就能解決6.0手機權(quán)限問題桶蛔,只是在真正項目中每個危險權(quán)限一個個去請求匙头,代碼重復性就比較高,于是就需要對此進行一次封裝羽圃,Github上面有不少封裝好的權(quán)限請求乾胶,使用方法就到每個鏈接去看吧,很簡單的朽寞,當然也可以自己在自己項目中封裝啦识窿。
- MPermissions a easy API to use runtime permission for Android M
- PermissionGen Android API easy to use permission for Android M
- RxPermissions Android runtime permissions powered by RxJava
還有一篇寫的很好的博客介紹運行權(quán)限的 Android 6.0運行時權(quán)限詳解