Android 6.0 新特性

分類:技術 時間:2016-10-24

6.0系統全稱為Marshmallow,Google 2015年I/O大會上正式發布,目前市場份額也在持續上漲,它有著眾多模塊的更新。

主要更新模塊

  • 電源管理(Android6.0 引入了下列特性來延長電池使用時間)
    • App Standby(應用待機)
      • 檢測:當設備部充電,且在這時間內用戶沒有直接或間接的啟動該應用。
      • 退出:當應用被激活時,或者設備充電時,系統將應用移除此狀態。
    • Doze(瞌睡)
      • 檢測:當設備不充電,且當設備靜止且滅屏一段時間。
      • 周期:平臺嘗試讓系統處于休眠狀態,周期性地進入在一個維持窗口恢復正常操作,然后進入更長的休眠狀態。
    • Exemptions(豁免)
      預裝在設備上的系統應用和云消息服務,默認通常被豁免。應用開發者可以要求其應用使用這種設定。用戶也可以在設置中來豁免某些應用。
  • App Link
    • 全稱為應用程序鏈接。
    • 技術點:就是我們的隱式啟動Intent。
    • Android更加鼓勵應用程序間的關聯而不再是單一的應用同瀏覽器的交互。
  • 指紋識別
    • 6.0 以前一直由各個手機制造廠商去研發。導致指紋識別不同的手機差異巨大。
    • 6.0 以后由Android系統提供API,硬件廠商只需提供相應的硬件支持即可。
  • 應用權限管理
    • 5.0 以前,只需要在manifest.xml中注冊聲明即可。
    • 5.0 以后,用戶可以在安裝的時候關閉某些權限。
    • 6.0 及以后,對于一些用戶隱私權限總是會在第一次提示用戶是否授予權限。

權限機制詳解

  • 優勢
    • 新的權限機制更好的保護了用戶的隱私。
    • 給了程序向用戶說明權限的作用。
    • 可以防止一些惡意程序盜取用戶或者手機信息,增強了Android系統的安全性。
  • 分類
    • Normal Premission
    • Dangerous Permission amp; Dangerous Premission Group
  • 概念
    如果你申請某個危險的權限,假設你的app早已被用戶授權了同一組的某個危險權限,那么系統會立即授權,而不需要用戶去點擊授權。
  • 新增API
    • ContextCompact.checkSelfPermission( 檢查當前APP是否具有某個權限)
    • ActivityCompact.requestPermissions()(如果沒有某個權限,就使用此方法申請權限,由于ActivityCompact是繼承自ContextCompact,所以也可以用ActivityCompact)
    • onRequestPermissionsResult()(申請權限是異步的,這是個回調來處理用戶選擇的結果,如果用戶同意給權限,緊接著做授權成功的處理,若用戶不同意授權,做授權失敗的處理)
    • ActivityCompact.shouldShowRequestPermissionRationale(給用戶解釋此權限的用途,在用戶拒絕授權才會出現)
  • 使用流程
    • 在AndroidManifest中添加需要的權限(不可省,還要適配6.0以下的系統)
    • 檢查權限(檢測危險權限)
    • 申請授權
    • 處理權限申請回調
  • Dangerous Permissions (危險權限都是一組一組的,如果申請某個危險的權限,假設app早已被用戶授權了同一組的某個危險權限,那么系統會立即授權,而不需要用戶去點擊授權,注意,不要對權限組過多的依賴,盡可能對每個危險權限都進行正常流程的申請,因為誰知道后期的版本中這個權限組會不會發生點變化呢)
    • group:android.permission-group.CONTACTS
      • permission:android.permission.WRITE_CONTACTS
      • permission:android.permission.GET_ACCOUNTS
      • permission:android.permission.READ_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
  • 代碼實踐

Demo核心代碼

只要按照使用流程去在代碼中請求權限,就能解決6.0手機權限問題,只是在真正項目中每個危險權限一個個去請求,代碼重復性就比較高,于是就需要對此進行一次封裝,Github上面有不少封裝好的權限請求,使用方法就到每個鏈接去看吧,很簡單的,當然也可以自己在自己項目中封裝啦。

  1. MPermissions a easy API to use runtime permission for Android M
  2. PermissionGen Android API easy to use permission for Android M
  3. RxPermissions Android runtime permissions powered by RxJava

Tags: 安卓開發

文章來源:http://www.jianshu.com/p/3a397b616c25


ads
ads

相關文章
ads

相關文章

ad