1. 程式人生 > >android版本相容問題總結

android版本相容問題總結

    以下是我在開發過程中遇到的android版本相容需要注意的幾個地方(會繼續補充):
一、 api 19 4.4以下,不能獲取通知的開關狀態
1. 4.4以上獲取狀態:
```
NotificationManagerCompat manager = NotificationManagerCompat.from(MyApplication.getInstance().getContext());
        boolean isOpened = manager.areNotificationsEnabled();
```
2. 跳轉到許可權設定:
// 根據isOpened結果,判斷是否需要提醒使用者跳轉AppInfo頁面,去開啟App通知許可權
```
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", MyApplication.getInstance().getPackageName(), null);
                    intent.setData(uri);
                    startActivity(intent);
```


二、 安裝許可權
1. 22 之前,也就是android5.1之前包括5.1,在清單檔案中註冊過的許可權預設都是開啟狀態的,但是23之後,預設的就是沒有開啟,所以,我們只需要吧targetSdkVersion改為小於22就可以了,這樣使用者安裝後許可權預設就是給予的狀態,就解決了這個問題。不過api小於22時不能彈出執行時許可權彈窗,如果使用者關了,只能提示使用者去設定裡開啟許可權;


三、 全域性懸浮按鈕
1. 7.0以上,使用TYPE_PHONE,是應用內全域性;7.0以下,使用TYPE_TOAST,是系統級全域性;


四、 關於定位的執行時許可權
1. targetSDKVersion < 23 & API(手機系統) < 6.0:安裝時預設獲得許可權,且使用者無法在安裝App之後取消許可權。
2. targetSDKVersion >= 23 & API(手機系統) < 6.0:安裝時預設獲得許可權,且使用者無法在安裝App之後取消許可權。
3. targetSDKVersion < 23 & API(手機系統) >= 6.0:安裝時預設獲得許可權,但是使用者可以在安裝App完成後動態取消授權。
4. targetSDKVersion >= 23 & API(手機系統) >= 6.0:安裝時不會獲得許可權,可以在執行時向用戶申請許可權。使用者授權以後仍然可以在設定介面中取消授權。


五、 js互動
1. 4.2以下,h5通過webview與原生互動有安全問題;


六、 虛擬機器
1. android從5.0開始,虛擬機器由原來的Dalvik虛擬機器改成了ART(android run time)虛擬機器;


七、 狀態列
1. android6.0 api23之後才可以設定狀態列字型顏色;