android 7.0 禁止 imei,Android一些适配
# Android 版本適配重點(diǎn)
其他細(xì)節(jié)請(qǐng)查看官網(wǎng)對(duì)應(yīng)版本:https://developer.android.com/preview
## 7.0
1. 后臺(tái)優(yōu)化
- 移除了以下靜態(tài)注冊(cè)廣播通知(動(dòng)態(tài)注冊(cè)可繼續(xù)使用):CONNECTIVITY_ACTION? ACTION_NEW_PICTURE ACTION_NEW_VIDEO
2. 系統(tǒng)權(quán)限更改
- Android 7.0 或更高版本的應(yīng)用私有目錄被限制訪問,傳遞軟件包網(wǎng)域外的 file:// URI 可能給接收器留下無(wú)法訪問的路徑。因此,嘗試傳遞 file:// URI 會(huì)觸發(fā) FileUriExposedException。分享私有文件內(nèi)容的推薦方法是使用 FileProvider,并授予 URI 臨時(shí)訪問權(quán)限
- DownloadManager 不再按文件名分享私人存儲(chǔ)的文件。舊版應(yīng)用在訪問 COLUMN_LOCAL_FILENAME 時(shí)可能出現(xiàn)無(wú)法訪問的路徑。面向 Android 7.0 或更高版本的應(yīng)用在嘗試訪問 COLUMN_LOCAL_FILENAME 時(shí)會(huì)觸發(fā) SecurityException。通過使用 DownloadManager.Request.setDestinationInExternalFilesDir() 或 DownloadManager.Request.setDestinationInExternalPublicDir() 將下載位置設(shè)置為公共位置的舊版應(yīng)用仍可以訪問 COLUMN_LOCAL_FILENAME 中的路徑,但是我們強(qiáng)烈反對(duì)使用這種方法。對(duì)于由 DownloadManager 公開的文件,首選的訪問方式是使用ContentResolver.openFileDescriptor()。
file:// 類型的Uri無(wú)法使用,需要使用FileProvider轉(zhuǎn)換
3. 多窗口模式
3.1 適配多窗口模式
https://developer.android.com/guide/topics/ui/multi-window?hl=zh_cn
3.2 關(guān)閉多窗口模式
在清單的 activity 或 application 元素中設(shè)置此屬性,以啟用或停用多窗口顯示:
```html
android:resizeableActivity=["true" | "false"]
```
## 8.0
1. 后臺(tái)執(zhí)行限制
- 嘗試在不允許其創(chuàng)建后臺(tái)服務(wù)的情況下使用 startService() 函數(shù),則該函數(shù)將引發(fā)一個(gè) IllegalStateException
應(yīng)使用startForegroundService函數(shù),并且應(yīng)用必須在創(chuàng)建服務(wù)后的五秒內(nèi)調(diào)用該服務(wù)的 startForeground() 函數(shù)
2. 應(yīng)用快捷鍵
https://developer.android.com/about/versions/oreo/android-8.0-changes?hl=zh-cn#as
3. 通知
針對(duì) 8.0 的應(yīng)用,創(chuàng)建通知前需要?jiǎng)?chuàng)建渠道,創(chuàng)建通知時(shí)需要傳入 channelId,否則通知將不會(huì)顯示
4. 升級(jí)
針對(duì) 8.0 的應(yīng)用需要在 AndroidManifest.xml 中聲明 REQUEST_INSTALL_PACKAGES 權(quán)限,否則將無(wú)法進(jìn)行應(yīng)用內(nèi)升級(jí)
5. 桌面圖標(biāo)(不強(qiáng)制,但是桌面圖片顯示會(huì)有白底)
https://mp.weixin.qq.com/s/WxgHJ1stBjokPi6lTUd1Mg
6. 廣播
移除所有為隱式廣播 Intent 注冊(cè)的廣播接收器,改為動(dòng)態(tài)注冊(cè)
7. 安裝apk
需要增加權(quán)限
```html
```
## 9.0
1. 前臺(tái)服務(wù)
應(yīng)用以 Android 9 或更高版本為目標(biāo)平臺(tái)并使用前臺(tái)服務(wù),則必須請(qǐng)求 FOREGROUND_SERVICE 權(quán)限,系統(tǒng)會(huì)自動(dòng)為請(qǐng)求權(quán)限的應(yīng)用授予此權(quán)限,如果不請(qǐng)求 FOREGROUND_SERVICE權(quán)限將會(huì)報(bào)錯(cuò),Manifest加入:
```html
```
2. 網(wǎng)絡(luò)
使用https或者加入配置項(xiàng)android:networkSecurityConfig
3. Apache HTTP 客戶端棄用
所以要想繼續(xù)使用Apache HTTP,需要在應(yīng)用的 AndroidManifest.xml 文件中添加
```html
```
4. 啟動(dòng)Activity
不能直接非 Activity 環(huán)境中(比如Service,Application)啟動(dòng) Activity,否則會(huì)崩潰報(bào)錯(cuò),需要Intent 中添加標(biāo)志FLAG_ACTIVITY_NEW_TASK
## 10
1. 禁止后臺(tái)啟動(dòng)Activity
使用通知觸發(fā),需要在AndroidManifest上增加權(quán)限USE_FULL_SCREEN_INTENT申明
2. 設(shè)備硬件信息讀取限制,AndroidId,IMEI不可獲取
3. Scope Store
可以使用以下配置停用分區(qū)存儲(chǔ)
- 如果targetSdkVersion < 29,那么不用處理
- 如果targetSdkVersion >= 29,加入一下配置
```html
Android 10 or higher. -->
...
```
使用分區(qū)存儲(chǔ),如果不需要訪問其他應(yīng)用的公開文件,則不需要申請(qǐng)讀寫權(quán)限READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE
- 內(nèi)部存儲(chǔ)
可使用原有File API訪問方式
- 外部存儲(chǔ)
1. 外部公開目錄
可供其他應(yīng)用和用戶自由訪問的文件,卸載您的應(yīng)用后,這些文件應(yīng)該仍然可供用戶使用
只有通過MediaStore API或者SAF(可在任意目錄下新建文件,但是是通過用戶交互方式),并且限制目錄只能為媒體文件或者下載目錄,無(wú)法使用File API訪問
- 如果要保存照片、音頻文件或視頻剪輯,請(qǐng)使用 MediaStore API
- 如果要保存任何其他文件(如 PDF 文檔),請(qǐng)使用 ACTION_CREATE_DOCUMENT intent,這是存儲(chǔ)訪問框架(SAF的一部分。此操作會(huì)調(diào)起系統(tǒng)UI界面
2. 外部私有目錄
使用getExternalFilesDir()函數(shù)訪問,后續(xù)操作可使用File API
卸載應(yīng)用時(shí)會(huì)被清除,調(diào)用 getExternalFilesDir() 并傳入指明您想要的目錄類型的名稱來(lái)獲取特定于應(yīng)用的目錄,或調(diào)用getExternalFilesDir()傳入自定義文件夾名稱
```kotlin
//固定圖片目錄
getExternalFilesDir(DIRECTORY_PICTURES)
//自定義目錄
getExternalFilesDir("myDir")
```
4. 后臺(tái)定位權(quán)限
需要ACCESS_BACKGROUND_LOCATION權(quán)限
5. 限制使用非SDK接口
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的android 7.0 禁止 imei,Android一些适配的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鸿蒙开发者社区入口,鸿蒙OS 社区
- 下一篇: android uri db,Andro