最近在思考個問題-----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。