<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] # Android 10重要變更 ## 1、對不可重置的設備標識符實施了限制 > 自 Android?10(API 級別 29)起,您的應用必須是[設備或個人資料所有者應用](https://source.android.com/devices/tech/admin/managed-profiles?hl=zh-cn#device_administration),具有[特殊運營商許可](https://source.android.com/devices/tech/config/uicc?hl=zh-cn),或具有`READ_PRIVILEGED_PHONE_STATE`特權,才能訪問不可重置的設備標識符(包含 IMEI 和序列號)。 > 受影響的方法包括: > * `Build` * [`getSerial()`](https://developer.android.com/reference/android/os/Build#getSerial()) > * `TelephonyManager` * [`getImei()`](https://developer.android.com/reference/android/telephony/TelephonyManager#getImei(int)) * [`getDeviceId()`](https://developer.android.com/reference/android/telephony/TelephonyManager#getDeviceId(int)) * [`getMeid()`](https://developer.android.com/reference/android/telephony/TelephonyManager#getMeid(int)) * [`getSimSerialNumber()`](https://developer.android.com/reference/android/telephony/TelephonyManager#getSimSerialNumber()) * [`getSubscriberId()`](https://developer.android.com/reference/android/telephony/TelephonyManager#getSubscriberId()) **即:** Android 10開始,普通應用無法再獲取到設備的IMEI。 > 如果您的應用沒有該權限,但您仍嘗試查詢不可重置標識符的相關信息,則平臺的響應會因目標 SDK 版本而異: > * 如果應用以 Android 10 或更高版本為目標平臺,則會發生[`SecurityException`](https://developer.android.com/reference/java/lang/SecurityException)。 > * 如果應用以 Android 9(API 級別 28)或更低版本為目標平臺,則相應方法會返回`null`或占位符數據(如果應用具有[`READ_PHONE_STATE`](https://developer.android.com/reference/android/Manifest.permission#READ_PHONE_STATE)權限)。否則,會發生`SecurityException`。 **即:** targetSdkVersion<=28時,獲取IMEI為空;targetSdkVersion>=29時,會發生SecurityException異常 ## 2、在后臺運行時訪問設備位置信息需要權限 > 為了讓用戶更好地控制應用對位置信息的訪問權限,Android 10 引入了 ACCESS_BACKGROUND_LOCATION 權限。與 ACCESS_FINE_LOCATION 和 ACCESS_COARSE_LOCATION 權限不同,ACCESS_BACKGROUND_LOCATION 權限僅會影響應用在后臺運行時對位置信息的訪問權限。 當targetSdkVersion<=28時,應用請求了`ACCESS_FINE_LOCATION`或`ACCESS_COARSE_LOCATION`權限時,系統會自動將`ACCESS_BACKGROUND_LOCATION`添加到請求中。 ## 3、外部存儲訪問權限范圍限定為應用文件和媒體(target 29+) > 默認情況下,對于以 Android 10 及更高版本為目標平臺的應用,其[訪問權限范圍限定為外部存儲](https://developer.android.com/training/data-storage/files/external-scoped),即分區存儲。此類應用可以查看外部存儲設備內以下類型的文件,無需請求任何與存儲相關的用戶權限: * 特定于應用的目錄中的文件(使用[`getExternalFilesDir()`](https://developer.android.com/reference/android/content/Context#getExternalFilesDir(java.lang.String))訪問)。 * 應用創建的照片、視頻和音頻片段(通過[媒體庫](https://developer.android.com/training/data-storage/files/media)訪問)。 **即:** 當targetSdkVersion>=29時,應用不需要請求權限,就可以訪問本應用目錄中的文件(getExternalFilesDir())和本應用創建的照片、視頻、音頻片段(通過媒體庫訪問)。 ## 4、對啟用和停用 WLAN 實施了限制(target 29+) > 以 Android 10 或更高版本為目標平臺的應用無法啟用或停用 WLAN。[`WifiManager.setWifiEnabled()`](https://developer.android.com/reference/android/net/wifi/WifiManager#setWifiEnabled(boolean))方法始終返回`false`。 > 如果您需要提示用戶啟用或停用 WLAN,請使用[設置面板](https://developer.android.com/about/versions/10/features#settings-panels)。 # Android 9重要變更 ## 1、強制執行 FLAG_ACTIVITY_NEW_TASK 要求 > 在 Android 9 中,您不能從非 Activity 環境中啟動 Activity,除非您傳遞 Intent 標志[`FLAG_ACTIVITY_NEW_TASK`](https://developer.android.com/reference/android/content/Intent#FLAG_ACTIVITY_NEW_TASK)。 如果您嘗試在不傳遞此標志的情況下啟動 Activity,則該 Activity 不會啟動,系統會在日志中輸出一則消息。 ## 2、構建序列號棄用(target 28+) > 在 Android 9 中,[`Build.SERIAL`](https://developer.android.com/reference/android/os/Build#SERIAL)始終設為`"UNKNOWN"`,以保護用戶隱私。 > 如果您的應用需要訪問設備的硬件序列號,您應改為請求[`READ_PHONE_STATE`](https://developer.android.com/reference/android/Manifest.permission#READ_PHONE_STATE)權限,然后調用[`getSerial()`](https://developer.android.com/reference/android/os/Build#getSerial())。 ## 3、默認啟用網絡傳輸層安全協議 (TLS) > 如果您的應用以 Android 9 或更高版本為目標平臺,則[`isCleartextTrafficPermitted()`](https://developer.android.com/reference/android/security/NetworkSecurityPolicy#isCleartextTrafficPermitted())方法默認返回`false`。如果您的應用需要針對特定網域啟用明文,則您必須在應用的[網絡安全配置](https://developer.android.com/training/articles/security-config)中,針對這些網域明確將`cleartextTrafficPermitted`設置為`true`。 ## 4、異形屏適配 參考:[https://blog.csdn.net/guolin\_blog/article/details/103112795](https://blog.csdn.net/guolin_blog/article/details/103112795) # Android 8重要變更 ## 1、Android ID > 對于安裝在運行 Android 8.0 的設備上的應用,ANDROID_ID的值現在將根據應用簽署密鑰和用戶確定作用域。應用簽署密鑰、用戶和設備的每個組合都具有唯一的ANDROID_ID值。因此,在相同設備上運行但具有不同簽署密鑰的應用將不會再看到相同的 Android ID(即使對于同一用戶來說,也是如此)。 **即:** 在一臺手機上,對于不同的應用來說,獲取到的Android ID值是不一樣的。 > 只要簽署密鑰相同,`ANDROID_ID`的值在軟件包卸載或重新安裝時就不會發生變化。 ## 2、權限組問題 > 在 Android 8.0 之前,如果應用在運行時請求權限并且被授予該權限,系統會錯誤地將屬于同一權限組并且在清單中注冊的其他權限也一起授予應用。 > 對于針對 Android 8.0 的應用,此行為已被糾正。系統只會授予應用明確請求的權限。然而,一旦用戶為應用授予某個權限,則所有后續對該權限組中權限的請求都將被自動批準。 > 例如,假設某個應用在其清單中列出 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE。應用請求 READ_EXTERNAL_STORAGE,并且用戶授予了該權限。如果該應用針對的是 API 級別 24 或更低級別,系統還會同時授予 WRITE_EXTERNAL_STORAGE,因為該權限也屬于同一 STORAGE 權限組并且也在清單中注冊過。如果該應用針對的是 Android 8.0,則系統此時僅會授予 READ_EXTERNAL_STORAGE;不過,如果該應用后來又請求 WRITE_EXTERNAL_STORAGE,則系統會立即授予該權限,而不會提示用戶。 **即:** targetSdkVersion<=24時,用戶申請一個權限,系統會同時授予用戶該權限組的其他權限。targetSdkVersion>=26時,用戶申請一個權限,系統會僅僅授予其該權限,后面再請求該權限組其他權限時,系統會自動授予,而不再提示用戶。 ## 3、通知渠道 參考[http://www.androidwiki.site/1569138](http://www.androidwiki.site/1569138) ## 4、應用圖標 參考[http://www.androidwiki.site/1569138](http://www.androidwiki.site/1569138) ## 5、允許安裝未知來源應用(target 26+) 針對 8.0 的應用需要在 AndroidManifest.xml 中聲明 REQUEST\_INSTALL\_PACKAGES 權限,否則將無法進行應用內升級。 # 參考 Android 10 中的隱私權變更:[https://developer.android.com/about/versions/10/privacy/changes](https://developer.android.com/about/versions/10/privacy/changes) Android Q 適配指南 讓你少走一堆彎路:[https://juejin.im/post/5cad5b7ce51d456e5a0728b0#comment](https://juejin.im/post/5cad5b7ce51d456e5a0728b0#comment) Android O 適配詳細指南:[https://juejin.im/post/5baa1c606fb9a05d396f16ea](https://juejin.im/post/5baa1c606fb9a05d396f16ea)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看