標籤:標準 ima sdn 作用 選擇 網路 發布會 state callback
安卓6.0(棉花糖)新特性匯總
Android伴隨著眾多新特性和新功能,Android6.0(API level 23)在系統和API上都有著諸多的改變。
1.App Permissions(軟體許可權管理) 在安卓6.0裡,應用同意提示可以自訂了。它允許對應用的許可權進行高度管理,比如應用能否使用位置、相機、麥克風、通訊錄等,這些都可以開放給開發人員和使用者。 作為開發人員,當你的app的目標版本(target)為Android6.0(API 23)或更高時,請確保在運行時進行許可權的檢查和請求。其中,新的方法checkSelfPermission()可以用來判斷你的應用是否被授予了許可權,而requestPermissions()可請求許可權。即使你app的目標版本在android6.0以下,也應該在新的許可權管理模型下測試你的應用。
2.Chrome Custom Tabs(網頁體驗提升) 新版的M對於Chrome的網頁瀏覽體驗進行了提升,它對登陸網站、儲存密碼、自動補全資料、多線程瀏覽網頁的安全性進行了一些列的最佳化。Android.provider.Browser.getAllBookmarks() 和 android.provider.Browser.saveBookmark()方法被移除,同樣的READ_HISTORY_BOOKMARKS和WRITE_HISTORY_BOOKMARKS許可權也被移除。如果你app的目標版本是android6.0或更高,請不要訪問全域的provider擷取書籤,而是應該在應用的內部儲存書籤資料。
3.App Links(APP關聯) 安卓6.0加強了軟體間的關聯,Google在現場展示了 一個例子,比如你的手機郵箱裡收到一封郵件,內文裡有以個Twitter連結,使用者點擊該連結可以直接跳轉到Twitter應用,而不再是網頁。
4.Android Pay(安卓支付) Android支付統一標準,新的安卓6.0系統中整合了Android Pay,其特性在於簡潔、安全、可選性。Android Pay是一個開放性平台,使使用者就可以選擇Google的服務或者使用銀行的APP來使用它,Android Pay支援4.4以後系統裝置,在發布會上Google宣布Android Pay已經與美國三大電訊廠商700多家商店達成合作。支付功能可以使用指紋來進行支付,這意味著今年基於安卓M的Nexus產品肯定會有指紋識別了。
5.Fingerprint Support(指紋支援) 安卓6.0增加了對指紋的識別API,Google開始在M裡自建官方的指紋識別支援,力求Android統一方案,目前所有的Android產品指紋識別都是使用非Google認證的技術和介面。 新特性六:Power & Change(電量管理 ) 新的電源管理模組將更為智能,比如Android平板長時間不移動時,安卓6.0M系統將自動關閉一些App。同時安卓6.0裝置將支援USB Type-C介面,新的電源管理將更好的支援Type-C介面。
6.眠和應用待機模式(Doze and App Standby)
此次發布引入了新的省電最佳化方案,在裝置和應用空閑時起作用。此特性影響所有的應用,請確保做好相應的測試。
睡眠模式(Doze): 手機在沒有外接電源且放置至螢幕關閉一段時間後,裝置將進入睡眠模式,它將使系統進入睡眠狀態(sleep state)。在此模式下,裝置周期性的短暫恢複正常操作,以使應用可以同步,系統執行一些必要操作。
應用待機模式(App Standby):在使用者沒有使用某應用的情況下,此模式允許系統判定此應用進入空閑狀態。系統的判定依據則是使用者在一定的時間內沒有再點擊此應用(譯註:主要還是依據前台進程判定)。如果此時裝置也沒有串連充電器,系統將禁用該應用的網路連接、同步及任務調度。
瞭解更多關於省電方面的變化,可查看Optimizing for Doze and App Standby(Optimizing for Doze and App Standby)
7.移除Appache的HTTP Client(Apache HTTP Client Removal)
Android6.0版本移除了對Appache的HTTP client的支援。如果你的app的目標版本是Android2.3(API level 9)或者更高,請使用HttpURLConnection類進行替換。此類採用了透明壓縮(transparent compression)和響應緩衝(response caching),最小化電量消耗。如果你希望繼續使用Appache Http API,請修改你的build.gradle檔案,
增加如下:android {
useLibrary ‘org.apache.http.legacy‘
}
8.BoringSSL
Android正在將OpenSSL庫替換為BoringSSL庫。這將影響你的應用在NDK中所連結的加密庫,比如libcrypto.so和libssl.so,它們不是NDK API的一部分。這些庫不是公開的API,因此在不同版本和裝置上的變化也不會及時通知開發人員。而且,這也將暴露你應用的安全缺陷。因此,需要修改你的native代碼,通過JNI的方式調用Java的加密API或者靜態連結你選擇的加密庫.
9.擷取硬體標識符(Access to Hardware Identifier)
在此版本中,為了更好的保護使用者的資料,Android移除了從代碼中通過Wi-Fi和藍芽的API訪問裝置本網標識符。因此WifiInfo.getMacAddress()和BluetoothAdapter.getAddress()將始終返回02:00:00:00:00:00
而為了能夠通過Wi-Fi和藍芽掃描時,擷取周邊裝置的硬體標識符,應用必須具有ACCESS_FINE_LOCATION 和 ACCESS_COARSE_LOCATION許可權:
WifiManager.getScanResults()
BluetoothDevice.ACTION_FOUND
BluetoothLeScanner.startScan()
注意:當運行Android6.0(API level 23)的裝置啟動後台Wi-Fi或藍芽掃描時, 此操作對外部裝置是可見的,且被顯示為一個隨機MAC的地址。
10.通知(Notifications)
此版本移除了Notification.setLatestEventInfo()方法。用Notification.Builder類來構造通知,在需要反覆更新通知的情況下,儲存並重用Notification.Builder的執行個體;
在擷取更新後的Notification執行個體時,調用其build()方法.
adb shell dumpsys notification命令不再輸出你的通知文本,而adb shell dumpsys notification --noredact命令將輸出一個notification對象的文本.
11.AudioManager Changes
此版本不再支援通過AudioManager類來直接對特定的音頻流設定音量和靜音,因此:setStreamSolo()方法過時(deprecated),替換調用requestAudioFocus()方法,
setStreamMute()方法過時,替換調用為adjustStreamVolume()方法,傳入的值也變為ADJUST_MUTE 或 ADJUST_UNMUTE
12.文本選擇(Text Selection)
使用者在應用中選擇文字後,你現在可以顯示一個浮動工具列(floating toolbar),展示並進行剪下、拷貝、粘貼操作,互動過程的實現和contextual action bar的實現一樣( Enabling the contextual action mode for individual views)
實現選擇文字後的浮動工具列,在app代碼中需要做如下修改:
(1)在View 或 Activity對象,ActionMode的調用從startActionMode(Callback) 變為 startActionMode(Callback, ActionMode.TYPE_FLOATING)
(2)替換原有的ActionMode.Callback為ActionMode.Callback2
(3)重寫OnGetContentRect()方法,提供內容Rect對象(文本選擇的矩形框)在view中的位置
(4)在矩形框作為唯一的元素不再有效時,調用invalidateContentRect() 方法
如果你在使用Android Support Library revision 22.2,需要注意浮動工具列不向後相容且因為appcompat預設接管ActionMode對象,阻止了浮動工具列被顯示。為了在AppCompatActivity中支援ActionMode,需要調用getDelegate()方法,之後對返回的AppCompatDelegate對象調用setHandleNativeActionModesEnabled()方法,並設定輸入參數為false,該調用將ActionMode對象的控制交還給系統架構層。在Android6.0(API level 23)的裝置上,架構層支援ActionBar或浮動工具列模式,在Android 5.1(API level 22)及以下的裝置上,只支援ActionBar模式。
此次,安卓6.0(Android M)新系統主要改進的地方就是,改善使用者體驗,修複BUG,提升了這個開放平台的整體品質,很多內容都得到了改善,相信從這些新特性中大家也能看到。
????
安卓6.0(棉花糖)新特性匯總