安卓系統(tǒng)適配6.0-10.0

6.0 Marshmallow 23

6.0 動態(tài)申請權限


private void checkAppPermission() {

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)// 

 {
//偽代碼

/*ArrayList permissons =new ArrayList();

        permissons.add(Manifest.permission.RECORD_AUDIO);

        permissons.add(Manifest.permission.READ_EXTERNAL_STORAGE);

        permissons.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);

        permissons.add(Manifest.permission.CAMERA);*/

//通過ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED判斷相關權限是否允許

//若尚未允許則ActivityCompat.requestPermissions(activity, permissions.toArray(new String[permissions.size()]), permissionRequestCode);

//int requestCode=0x00000001;
}

}

6.0 位置權限

Android6.0之后,Wifi的使用更加嚴格簿寂。需要動態(tài)獲取LOCATION權限,如果還想獲取Wifi列表的話還需要打開GPS(位置信息)谈飒。

藍牙掃描也需要位置權限猾昆。

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>

7.0 Nougat 24-25

7.0 應用間共享文件

https://blog.csdn.net/lmj623565791/article/details/72859156

對于面向 Android 7.0 的應用,Android 框架執(zhí)行的 StrictMode API 政策禁止在您的應用外部公開 file:// URI胶背。如果一項包含文件 URI 的 intent 離開您的應用巷嚣,則應用出現(xiàn)故障,并出現(xiàn) FileUriExposedException 異常钳吟。

同樣的廷粒,官網(wǎng)也給出了解決方案:
要在應用間共享文件,您應發(fā)送一項 content:// URI,并授予 URI 臨時訪問權限坝茎。進行此授權的最簡單方式是使用 FileProvider 類涤姊。如需了解有關權限和共享文件的詳細信息,請參閱共享文件嗤放。

去AndroidManifest.xml聲明provider思喊,provider里邊有meta-data屬性,里邊需要指向設有子節(jié)點一個xml文件。
核心代碼FileProvider.getUriForFile(this, "com.zhy.android7.fileprovider", file);

微信圖片_20210226095247.jpg

7.0 PopupWindow位置不正確

代碼來源:https://blog.csdn.net/qq_17766199/article/details/77404712

if (Build.VERSION.SDK_INT >= 24) { // Android 7.x中,PopupWindow高度為match_parent時,會出現(xiàn)兼容性問題,需要處理兼容性
    int[] location = new int[2]; // 記錄anchor在屏幕中的位置
    anchor.getLocationOnScreen(location);
    int offsetY = location[1] + anchor.getHeight();
    if (Build.VERSION.SDK_INT >= 25) { // Android 7.1 ,8.0中次酌,PopupWindow高度為 match_parent 時恨课,會占據(jù)整個屏幕
        // 故而需要在 Android 7.1上再做特殊處理
        int screenHeight = ScreenUtils.getScreenHeight(context); // 獲取屏幕高度
        popupWindow.setHeight(screenHeight - offsetY); // 重新設置 PopupWindow 的高度
    }
    popupWindow.showAtLocation(anchor, Gravity.NO_GRAVITY, 0, offsetY);
} else {
    popupWindow.showAsDropDown(anchor);
}

7.0 三個廣播被禁止監(jiān)聽或發(fā)送

在后臺時不再能接收到 CONNECTIVITY_CHANGE 廣播,前臺不影響岳服。
不能發(fā)送或是接收新增圖片(ACTION_NEW_PICTURE)和新增視頻(ACTION_NEW_VIDEO) 的廣播剂公。

8.0 Oreo 26-27

8.0 安裝apk

安卓8.0去除了“允許未知來源”選項,如果apk里邊有安裝apk的功能(如應用更新)吊宋,需用canRequestPackageInstalls()查詢是否有此權限纲辽,沒有的話用Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES這個action引導用戶到安裝未知來源應用界面去授權。

代碼示例來源:https://blog.csdn.net/qq_17766199/article/details/80965631

    private static final int REQUEST_CODE_UNKNOWN_APP = 100;

    private void installAPK(){

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            boolean hasInstallPermission = getPackageManager().canRequestPackageInstalls();
            if (hasInstallPermission) {
                //安裝應用
            } else {
                //跳轉至“安裝未知應用”權限界面璃搜,引導用戶開啟權限
                Uri selfPackageUri = Uri.parse("package:" + this.getPackageName());
                Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, selfPackageUri);
                startActivityForResult(intent, REQUEST_CODE_UNKNOWN_APP);
            }
        }else {
            //安裝應用
        }

    }

    //接收“安裝未知應用”權限的開啟結果
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_CODE_UNKNOWN_APP) {
            installAPK();
        }
    }


8.0廣播

靜態(tài)注冊廣播 - 在AndroidManifest.xml中設置拖吼,程序不用啟動亦可接收。 典型代表:很多開機啟動的APP这吻,都是接收開機啟動廣播帶起服務的绿贞。
動態(tài)注冊廣播 - 代碼中注冊廣播,程序未啟動時橘原,無法接收廣播籍铁。 、
典型代表:Go短信趾断,將Go短信強行停止拒名,Go短信無法接收短信。

靜態(tài)廣播無法清單注冊芋酌,動態(tài)的可以增显。

Google官方聲明:從android 8.0(API26)開始,對清單文件中靜態(tài)注冊廣播接收者增加了限制脐帝,建議大家不要在清單文件中靜態(tài)注冊廣播接收者同云,改為動態(tài)注冊。當然堵腹,如果你還是想用靜態(tài)注冊的方式也是有方法的炸站,Intent里添加Component參數(shù)可實現(xiàn)。

8.0通知權限Notification

Android 8.0之后通知權限默認都是關閉的疚顷,無法默認開啟以及通過程序去主動開啟旱易,需要程序員讀取權限開啟情況禁偎,然后提示用戶去開啟。

代碼來源:https://blog.csdn.net/yinhaide/article/details/103295050

/**
 * 判斷通知權限是否開啟
 * @param context 上下文
 */
public static boolean isNotificationEnabled(Context context){
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        return ((NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE)).areNotificationsEnabled();
    } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        AppOpsManager appOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
        ApplicationInfo appInfo = context.getApplicationInfo();
        String pkg = context.getApplicationContext().getPackageName();
        int uid = appInfo.uid;

        try {
            Class<?> appOpsClass = Class.forName(AppOpsManager.class.getName());
            Method checkOpNoThrowMethod = appOpsClass.getMethod("checkOpNoThrow", Integer.TYPE, Integer.TYPE, String.class);
            Field opPostNotificationValue = appOpsClass.getDeclaredField("OP_POST_NOTIFICATION");
            int value = (Integer) opPostNotificationValue.get(Integer.class);
            return (Integer) checkOpNoThrowMethod.invoke(appOps, value, uid, pkg) == 0;
        } catch (NoSuchMethodException | NoSuchFieldException | InvocationTargetException | IllegalAccessException | RuntimeException | ClassNotFoundException ignored) {
            return true;
        }
    } else {
        return true;
    }
}
//前往設置開啟權限
/**
 * 打開設置頁面打開權限
 *
 * @param activity activity
 * @param requestCode 這里的requestCode和onActivityResult中requestCode要一致
 */
public static void startSettingActivity(@NonNull Activity activity, int requestCode) {
    try {
        Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.parse("package:" + activity.getPackageName()));
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        activity.startActivityForResult(intent, requestCode);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
————————————————
版權聲明:本文為CSDN博主「尹海德」的原創(chuàng)文章阀坏,遵循CC 4.0 BY-SA版權協(xié)議如暖,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/yinhaide/article/details/103295050

9.0 Pie 28

自 Android 6 發(fā)布,就移除了對 Apache HTTP 客戶端的支持忌堂,而推薦改用 HttpURLConnection 類,因為它可以通過透明壓縮和響應緩存減少網(wǎng)絡使用盒至,并可最大限度降低耗電量

10.0 Q 29

最大的變化是用戶隱私權

10.0 存儲權限

Android Q 在外部存儲設備中為每個應用提供了一個“隔離存儲沙盒”(例如 /sdcard)。任何其他應用都無法直接訪問您應用的沙盒文件士修。由于文件是您應用的私有文件枷遂,因此您不再需要任何權限即可在外部存儲設備中訪問和保存自己的文件。此變更可讓您更輕松地保證用戶文件的隱私性李命,并有助于減少應用所需的權限數(shù)量登淘。

·訪問自己程序的文件箫老,不需要請求權限封字,取消了READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE權限
·訪問沙盒外的媒體共享文件,需申請新的媒體權限耍鬓,READ_MEDIA_IMAGES阔籽,READ_MEDIA_AUDIOREAD_MEDIA_IMAGES
·

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末牲蜀,一起剝皮案震驚了整個濱河市笆制,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌涣达,老刑警劉巖在辆,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異度苔,居然都是意外死亡匆篓,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門寇窑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鸦概,“玉大人,你說我怎么就攤上這事甩骏〈笆校” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵饮笛,是天一觀的道長咨察。 經(jīng)常有香客問我,道長福青,這世上最難降的妖魔是什么扎拣? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上二蓝,老公的妹妹穿的比我還像新娘誉券。我一直安慰自己,他們只是感情好刊愚,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布踊跟。 她就那樣靜靜地躺著,像睡著了一般鸥诽。 火紅的嫁衣襯著肌膚如雪商玫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天牡借,我揣著相機與錄音拳昌,去河邊找鬼。 笑死钠龙,一個胖子當著我的面吹牛炬藤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播碴里,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼沈矿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了咬腋?” 一聲冷哼從身側響起羹膳,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎根竿,沒想到半個月后陵像,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡寇壳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年醒颖,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片九巡。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡图贸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出冕广,到底是詐尸還是另有隱情疏日,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布撒汉,位于F島的核電站沟优,受9級特大地震影響,放射性物質發(fā)生泄漏睬辐。R本人自食惡果不足惜挠阁,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一宾肺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧侵俗,春花似錦锨用、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至寻歧,卻和暖如春掌栅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背码泛。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工猾封, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人噪珊。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓晌缘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親卿城。 傳聞我的和親對象是個殘疾皇子枚钓,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容