Android 9 適配遇到的坑及解決方案

最近在思考個問題-----APK 運行權限與文件系統(tǒng)權限的區(qū)別是什么?



在適配Android 9 上遇到的問題來啦!!!!Android 10 適配問題總結持續(xù)中....

問題1:Http請求失敗SSL handshake timed out

解決辦法:

? ? ? ? Android 9.0 開始,默認不允許明文傳輸,所以在建立網(wǎng)絡連接時會使用 https 連接,同時進行安全認證。如果應用沒有做對應處理,即會發(fā)生上述異常。在應用中的res/xml目錄添加network_security_config.xml文件。內(nèi)容如下:

接著在androidManifest.xml文件的<Application>標簽里面添加android:networkSecurityConfig="@xml/network_security_config"即可解決此問題

?以上這是一種簡單粗暴的配置方法,要么支持http,要么不支持http。為了安全靈活,我們可以指定支持的http域名:

問題2:Apache HTTP 客戶端棄用

? ? ? ? 在 Android 6.0 時,就已經(jīng)取消了對?Apache HTTP?客戶端的支持。 從 Android 9.0 開始,默認情況下該庫已從?bootclasspath?中移除,但是耐不住有些SDK中還在使用,導致Android p 設備報錯java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion

解決辦法:

? 在androidManifest.xml文件的<Application>標簽的內(nèi)部,添加一個子標簽,內(nèi)容為

<uses-library android:name="org.apache.http.legacy"?android:required="false"?/>

問題3:FOREGROUND_SERVICE?權限,引發(fā)?SecurityException

問題4:啟動Activity異常

? ? ? 在9.0 中,不能直接非?Activity?環(huán)境中(比如Service,Application)啟動?Activity,否則會崩潰報錯;

這類問題一般會在點擊推送消息跳轉頁面這類場景,解決方法就是 Intent 中添加標志FLAG_ACTIVITY_NEW_TASK。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容