前幾天收到了公司的郵件,要求下一期版本中公升級targetsdk29,也就是適配android10。
想著這周自己的手機也剛剛公升級到android10系統,趁著趁著興奮就趕緊來研究一下androidq吧!
1.框架遷移步驟
2.更新android工程配置
首先在gradle.properties中開啟支援android 10的支援,示例如下:
android.useandroidx=
true
android.enablejetifier=
true
android ..
.}
3.遷移support包至android x
4.處理公升級android q帶來的行為變更
1.android q中的**資源讀寫
隱私是android 10的核心關注點,更嚴格的許可權,並限制了資料應用程式的使用。針對**資源讀寫,有以下地方需要注意:
//公有目錄只能通過content uri+id的方式訪問,以前的file路徑全部無效,如果是video,記得換成mediastore.videos
if(build.version.sdk_int >= build.version_codes.q)
判斷公有目錄檔案是否存在,自android q開始公有目錄file api都失效,不能直接通過new file(path).exists();判斷公檔案是否存在;
copy或者download檔案到公有目錄也需要注意;
儲存相關,通過mediastore儲存,相容androidq,儲存成功自動新增到相簿資料庫,無需再傳送廣播告訴系統插入相簿;
2.edittext預設不獲取焦點,不自動彈出鍵盤
當sdk版本大於api 28時,且裝置版本為android p以上版本,解決方法在oncreate中加入如下**,可獲得焦點,如需彈出鍵盤可延遲下:
medittext.
post((
)->
);
3.第三方分享等操作,都只能通過mediastore等api
直接使用檔案路徑的,如qq分享,都需要注意,這是不可行的,都只能通過mediastore等api,拿到uri來操作。
4.裝置硬體資訊讀取限制
ssaid的獲取方式為:
string id = android.provider.settings.secure.
getstring
(context.
getcontentresolver()
, android.provider.settings.secure.android_id)
;
5.region.op相關異常
這個問題主要是sdk版本大於api 28上呼叫canvas出現的崩潰「invalid region.op - only intersect and difference are allowed「,當目標版本從android p開始,canvas.clippath(@nonnull path path, @nonnull region.op op) ; 已經被廢棄,而且是包含異常風險的廢棄api,只有 region.op.intersect 和 region.op.difference 得到相容,幾乎所有的部落格解決方案都是如下簡單粗暴:
if
(build.version.sdk_int >= build.version_codes.p)
else
6.限制程式訪問剪貼簿
android q 包含了名為「read_clipboard_in_background」的新許可權。 顧名思義,新的許可權將阻止隨機的後台應用程式訪問剪貼簿內容。
Android10適配裝置ID獲取
解決android10系統版本無法獲取裝置id唯一標識的問題。獲取裝置id方法 private static string getcustomuuid else return fileuuid 定義變數 private static final string uuid file dir androi...
Android10新特性解析
和往年一樣,將於今年5月7日舉辦的谷歌 i o 19大會上,谷歌將發布首版android q 即android 10 系統。按照慣例,android q beta並非首個開發者預覽版,可能是第二或者第三版,beta階段更大意義在於非谷歌系的oem品牌手機加入,便於測試和使用者嘗鮮。至於正式版什麼時候...
android螢幕適配攻略
一 計量單位概念 1.螢幕尺寸 螢幕對角線長度 英吋 2 螢幕解析度 縱向畫素x橫向畫素 單位是px 3 畫素密度 dpi,每英吋畫素點個數,計算方式 畫素密度 對角線畫素個數 對角線英吋長度 對角線畫素點個數等於縱向畫素和橫向畫素開平方根 4 px 構成影象最小單位 dp,dip 密度無關畫素 以...