您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Android13新功能有哪些”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“Android13新功能有哪些”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。
讓應(yīng)用圖標隨著主題換色。
首先應(yīng)用要提供自適應(yīng)圖標和單色應(yīng)用圖標,并通過清單中的 <adaptive-icon> 元素指向該單色應(yīng)用圖標。
然后需要用戶在系統(tǒng)設(shè)置中啟用帶主題的應(yīng)用圖標
這樣系統(tǒng)會根據(jù)壁紙和主題來確定色調(diào)顏色,然后該顏色將應(yīng)用于單色應(yīng)用圖標。
從 Android 13 開始,將內(nèi)容添加到剪貼板時,我們可以預(yù)覽復(fù)制的內(nèi)容。
Android13也加入了對剪貼板敏感內(nèi)容的脫敏處理,后面會詳細說。
Android12引入了Splash Screen API,可以幫助開發(fā)者更好的開發(fā)啟動頁面,我之前也專門用一篇文章介紹過,不過有些地方還需要改進。果不然Android13就進行了完善,包括下面兩項改動;
系統(tǒng)會直接從 AnimatedVectorDrawable 推斷動畫時長。在 Android 13 之前,必須直接設(shè)置 windowSplashScreenAnimationDuration。
使用新的 windowSplashScreenBehavior 屬性可以更好地控制應(yīng)用是否始終在 Android 13 及更高版本中的啟動畫面上顯示該圖標。
在以前任何應(yīng)用都可以向動態(tài)注冊的接收器發(fā)送不受保護的廣播,除非該接收器受簽名權(quán)限的保護。Android13允許用戶指定是否接受外部應(yīng)用的廣播,前提是啟用了DYNAMIC_RECEIVER_EXPLICIT_EXPORT_REQUIRED 兼容性框架(默認是關(guān)閉的)
在注冊廣播的時候設(shè)置一個Flag,如下:
context.registerReceiver(sharedBroadcastReceiver, intentFilter, RECEIVER_EXPORTED) context.registerReceiver(privateBroadcastReceiver, intentFilter, RECEIVER_NOT_EXPORTED)
注意:如果啟用了DYNAMIC_RECEIVER_EXPLICIT_EXPORT_REQUIRED,在注冊廣播的時候就必須設(shè)置RECEIVER_EXPORTED或RECEIVER_NOT_EXPORTED。
Android13提供了照片選擇器,這樣無需向應(yīng)用授予整個媒體庫的訪問權(quán)限。
使用照片選擇器需要 1.6.0-alpha05 或更高版本的 androidx.activity 庫,主要api:
PickVisualMedia,用于選擇單張圖片或單個視頻。
PickMultipleVisualMedia,用于選擇多張圖片或多個視頻。
示例代碼如下:
val pickMedia = registerForActivityResult(PickVisualMedia()) { uri -> if (uri != null) { Log.d("PhotoPicker", "Selected URI: $uri") } else { Log.d("PhotoPicker", "No media selected") } } pickMedia.launch(PickVisualMediaRequest(PickVisualMedia.ImageAndVideo)) pickMedia.launch(PickVisualMediaRequest(PickVisualMedia.ImageOnly)) pickMedia.launch(PickVisualMediaRequest(PickVisualMedia.VideoOnly)) val mimeType = "image/gif" pickMedia.launch(PickVisualMediaRequest(PickVisualMedia.SingleMimeType(mimeType)))
Android13之前針對WIFI的權(quán)限是ACCESS_FINE_LOCATION,即使我們不想定位只想查詢一下附近的wifi。Android13提供了一個新的運行時權(quán)限NEARBY_WIFI_DEVICES來專門針對這種情況,這個權(quán)限影響的API如下:
WifiManager
startLocalOnlyHotspot()
WifiAwareManager
attach()
WifiAwareSession
publish()
subscribe()
WifiP2pManager
addLocalService()
connect()
createGroup()
discoverPeers()
discoverServices()
requestDeviceInfo()
requestGroupInfo()
requestPeers()
WifiRttManager
startRanging()
使用以上Api需要申請NEARBY_WIFI_DEVICES權(quán)限。
Android13提供了一個新的鬧鐘權(quán)限USE_EXACT_ALARM,它類似于SCHEDULE_EXACT_ALARM不過是自動授權(quán)的,不需要用戶手動授權(quán)。
Google對這個權(quán)限的要求是必須是鬧鐘、計時器或提供活動通知的日歷應(yīng)用才可以使用,GooglePlay會對使用這個權(quán)限的應(yīng)用進行審核。不過目前國內(nèi)還沒有限制,后續(xù)各大應(yīng)用市場應(yīng)該也會跟進限制。
下面來看看適配Android13需要注意哪些事項。這里只列舉一些比較常用的功能,全部內(nèi)容可以參賽developer.android.google.cn/about/versi…
Android 13(API 級別 33)引入了運行時通知權(quán)限POST_NOTIFICATIONS,如果應(yīng)用以 Android 13 為目標平臺,當需要發(fā)送通知的時候就需要動態(tài)請求該權(quán)限,否則無法發(fā)出通知。
注意:媒體相關(guān)的通知不受這個權(quán)限的影響,依然可以正常進行通知;前臺服務(wù)的通知則受本權(quán)限影響。
可以通過NotificationManager的areNotificationsEnabled()來檢查應(yīng)用是否可以發(fā)送通知。
上面我們提到Android13提供來剪切板預(yù)覽功能,但是如果復(fù)制的是敏感內(nèi)容的話,可以在調(diào)用 ClipboardManager#setPrimaryClip() 之前向 ClipData 的 ClipDescription 添加一個標志,這樣預(yù)覽的時候就看不到敏感內(nèi)容了
代碼如下:
// When your app targets API level 33 or higher clipData.apply { description.extras = PersistableBundle().apply { putBoolean(ClipDescription.EXTRA_IS_SENSITIVE, true) } } // If your app targets a lower API level clipData.apply { description.extras = PersistableBundle().apply { putBoolean("android.content.extra.IS_SENSITIVE", true) } }
添加標志后的效果如下
上面提到了,針對附近WIFI設(shè)備提供了一個新的運行時權(quán)限NEARBY_WIFI_DEVICES。
如果應(yīng)用不會使用WIFI相關(guān)API進行定位,那么可以將 android:usesPermissionFlags 屬性設(shè)置為 neverForLocation:
<manifest ...> <uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" android:usesPermissionFlags="neverForLocation" /> <application ...> ... </application> </manifest>
因為NEARBY_WIFI_DEVICES只在Android13上,所以我們還要保留ACCESS_FINE_LOCATION以應(yīng)對Android12及以下設(shè)備,不過可以為其設(shè)置最高sdk版本,如下:
<manifest ...> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="32" /> <application ...> ... </application> </manifest>
如果應(yīng)用以 Android 13 為目標平臺,那么如果要訪問媒體文件時就不能像之前那樣請求READ_EXTERNAL_STORAGE權(quán)限,Android 13提供了更加細化的權(quán)限,必須請求以下權(quán)限來代替:
媒體類型 | 請求權(quán)限 |
---|---|
圖片和照片 | READ_MEDIA_IMAGES |
視頻 | READ_MEDIA_VIDEO |
音頻文件 | READ_MEDIA_AUDIO |
這樣可以更加保護用戶的隱私。
如果同時請求 READ_MEDIA_IMAGES 權(quán)限和 READ_MEDIA_VIDEO 權(quán)限,只會顯示一個系統(tǒng)權(quán)限對話框。
注意:如果您的應(yīng)用只需要訪問圖片、照片和視頻,請考慮使用 照片選擇器,而不是聲明 READ_MEDIA_IMAGES 和 READ_MEDIA_VIDEO 權(quán)限。
如果應(yīng)用以 Android 13 為目標平臺,并且在后臺運行時需要訪問身體傳感器信息,那么除了現(xiàn)有的 BODY_SENSORS權(quán)限外,還需要聲明新的 BODY_SENSORS_BACKGROUND權(quán)限。
讀到這里,這篇“Android13新功能有哪些”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。