国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android12中藍(lán)牙權(quán)限適配

這篇具有很好參考價值的文章主要介紹了Android12中藍(lán)牙權(quán)限適配。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

AndroidManifest.xml

<!--maxSdkVersion=30適配到Android11 -->
<uses-permission
? ? android:name="android.permission.BLUETOOTH"
? ? android:maxSdkVersion="30" />
<uses-permission
? ? android:name="android.permission.BLUETOOTH_ADMIN"
? ? android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!--Android12新增藍(lán)牙權(quán)限 -->
<!-- Android 12在不申請定位權(quán)限時,必須加上android:usesPermissionFlags="neverForLocation",否則搜不到設(shè)備 -->
<uses-permission android:name="android.permission.BLUETOOTH_SCAN"
? ? ? ? android:usesPermissionFlags="neverForLocation"
        tools:targetApi="s" />
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

代碼

//獲取藍(lán)牙適配器
public static BluetoothAdapter mBluetoothAdapter = null;
? ? //藍(lán)牙狀態(tài)監(jiān)聽廣播
    public class BlueToothReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            switch (intent.getAction()) {
                case BluetoothAdapter.ACTION_STATE_CHANGED:
                    int blueState = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, 0);
                    switch (blueState) {
                        case BluetoothAdapter.STATE_TURNING_ON:
                            Log.e("onReceive", "---------藍(lán)牙正在打開中");
                            break;
                        case BluetoothAdapter.STATE_ON:
                            Log.e("onReceive", "---------藍(lán)牙已經(jīng)打開");
                            mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
                            break;
                        case BluetoothAdapter.STATE_TURNING_OFF:
                            Log.e("onReceive", "---------藍(lán)牙正在關(guān)閉中");
                            break;
                        case BluetoothAdapter.STATE_OFF:
                            Log.e("onReceive", "---------藍(lán)牙已經(jīng)關(guān)閉");
                            break;
                    }
                    break;
            }
        }
    }
? ? private IntentFilter makeFilter() {
        IntentFilter filter = new IntentFilter();
        filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
        return filter;
    }
? ? //Android12藍(lán)牙權(quán)限申請
    private boolean bluePermission(){
? ? //compileSdkVersion項目中編譯SDK版本大于30申請以下權(quán)限可使用
? ? //Manifest.permission.BLUETOOTH_SCAN、Manifest.permission.BLUETOOTH_ADVERTISE、Manifest.permission.BLUETOOTH_CONNECT
? ? //若小于30可以直接使用權(quán)限對應(yīng)的字符串
        if (Build.VERSION.SDK_INT>30){
            if (ContextCompat.checkSelfPermission(this,
                    "android.permission.BLUETOOTH_SCAN")
                    != PERMISSION_GRANTED
                    || ContextCompat.checkSelfPermission(this,
                    "android.permission.BLUETOOTH_ADVERTISE")
                    != PERMISSION_GRANTED
                    || ContextCompat.checkSelfPermission(this,
                    "android.permission.BLUETOOTH_CONNECT")
                    != PERMISSION_GRANTED){
                ActivityCompat.requestPermissions(this,new String[]{
                                "android.permission.BLUETOOTH_SCAN",
                                "android.permission.BLUETOOTH_ADVERTISE",
                                "android.permission.BLUETOOTH_CONNECT"}, 1);
                return false;
            }
        }
        return true;
    }
? ? private void openBlueTooth(){
        if (bluePermission())
            mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        else
            return;
        BlueToothReceiver btlr = new BlueToothReceiver();
        this.registerReceiver(btlr, makeFilter());
? ? ? ? if (!mBluetoothAdapter.isEnabled()) {// 判斷是否打開藍(lán)牙
            showHandlerToast("請先開啟藍(lán)牙!");
            //彈出對話框提示用戶是后打開
            Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
            //startActivityForResult(intent, SEARCH_CODE);
            // 不做提示,強行打開
            mBluetoothAdapter.enable();
        }
? ? }

說明:

必須按照這兩步申請藍(lán)牙權(quán)限,首先在androidManifest.xml中配置藍(lán)牙權(quán)限,Android11及以下android.permission.BLUETOOTH、android.permission.BLUETOOTH_ADMIN申請這兩個,Android12中藍(lán)牙權(quán)限進(jìn)行新增android.permission.BLUETOOTH_SCAN、android.permission.BLUETOOTH_ADVERTISE、android.permission.BLUETOOTH_CONNECT使用這三個;其次在代碼中需要動態(tài)申請Android12的藍(lán)牙權(quán)限,測試發(fā)現(xiàn)Android12中動態(tài)申請權(quán)限后則藍(lán)牙直接開啟,通過對藍(lán)牙狀態(tài)的監(jiān)聽獲取藍(lán)牙適配器:mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

注意:不管是Android12還是Android12以下不打開藍(lán)牙都是無法獲取藍(lán)牙適配器:mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();打開藍(lán)牙則可以獲取到藍(lán)牙適配器,但若沒有申請藍(lán)牙所需權(quán)限,藍(lán)牙功能也是無法使用?。?!二者缺一不可文章來源地址http://www.zghlxwxcb.cn/news/detail-503673.html

到了這里,關(guān)于Android12中藍(lán)牙權(quán)限適配的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Android Studio: AndroidManifest.xml:11: AAPT: error: attribute android:dataExtractionRules not found

    Android Studio: AndroidManifest.xml:11: AAPT: error: attribute android:dataExtractionRules not found

    Android Studio: AndroidManifest.xml:11: AAPT: error: attribute android:dataExtractionRules not found. flyfish 錯誤如圖 打開AndroidManifest.xml文件 刪除 dataExtractionRules 這句

    2024年02月12日
    瀏覽(28)
  • Android模擬藍(lán)牙藍(lán)牙鍵盤——適配Android和Windows

    Android模擬藍(lán)牙藍(lán)牙鍵盤——適配Android和Windows

    學(xué)校寒假有個程序設(shè)計比賽,我也一直想要去寫一個安卓模擬的藍(lán)牙鍵盤,這樣無論到哪里,比如班班通和沒有鍵盤的電腦設(shè)備,有手機就可以操作它,也比USB方便一些。忙活了一個寒假,也走了不少歪路,終于整成了,下面分享一些經(jīng)驗。 (學(xué)校的軟件設(shè)計比賽已經(jīng)交了終

    2024年04月28日
    瀏覽(21)
  • AndroidManifest.xml日常筆記

    Bundle主要用于傳遞數(shù)據(jù);它保存的數(shù)據(jù),是以key-value(鍵值對)的形式存在的。 我們經(jīng)常使用Bundle在Activity之間傳遞數(shù)據(jù),傳遞的數(shù)據(jù)可以是boolean、byte、int、long、float、double、string等基本類型或它們對應(yīng)的數(shù)組,也可以是對象或?qū)ο髷?shù)組。當(dāng)Bundle傳遞的是對象或?qū)ο髷?shù)組時,必

    2024年02月14日
    瀏覽(37)
  • 安卓-AndroidManifest.xml修復(fù)

    安卓-AndroidManifest.xml修復(fù)

    解析編譯之后的AndroidManifest文件格式:http://www.520monkey.com/archives/575 案例apk jadx打開發(fā)現(xiàn)AndroidManifest.xml異常,無法正常顯示 那么我們用apktool反編譯試試 可以看到報錯了,顯示不能解析此xml文件,原因是預(yù)期是0x001c0001,得到的是0x01001c00,可以看到是頭部出錯誤了 那么預(yù)期的

    2023年04月17日
    瀏覽(14)
  • Android存儲權(quán)限完美適配(Android11及以上適配)

    Android存儲權(quán)限完美適配(Android11及以上適配)

    一、Bug簡述 一個很普通的需求,需要下載圖片到本地,我的三個測試機(榮耀Android10,紅米 11 和小米Android 13都沒有問題)。 然后,主角登場了,測試的三星Android 13 死活拉不起存儲權(quán)限彈窗。 想了下,三星的系統(tǒng)可能和小米的系統(tǒng)做了些區(qū)別。于是就是看了下存儲權(quán)限的版

    2024年02月06日
    瀏覽(17)
  • Android 屏幕適配資源xml的配置方法

    在 Android 中進(jìn)行屏幕適配是確保應(yīng)用在不同設(shè)備上正常顯示的重要步驟之一。資源文件夾的配置是實現(xiàn)屏幕適配的關(guān)鍵之一,以下是一些常見的資源文件夾配置方法,以適應(yīng)不同屏幕尺寸和密度。 不同屏幕尺寸的適配: res/layout :通常存放默認(rèn)的布局文件。 res/layout-sw600dp :

    2024年02月12日
    瀏覽(20)
  • 【Android 10 適配】隱私權(quán)限變更

    更詳細(xì)內(nèi)容請參考 Android 10 中的隱私權(quán)變更 Android 10(API 級別 29)引入了多項功能和行為變更,旨在更好地保護(hù)用戶的隱私。這些變更讓用戶更清楚地了解并更好地控制自己的數(shù)據(jù)及為應(yīng)用提供的權(quán)能。 下面是 Android 10 中與 隱私權(quán)限 相關(guān)的主要變更。 默認(rèn)情況下,以 Andr

    2024年01月22日
    瀏覽(24)
  • Android所有版本的存儲權(quán)限適配

    ? ? ? ? ? ? ?第一步:在Manifest文件添加如下權(quán)限 ?? ? ? ? uses-permission android:name=\\\"android.permission.WRITE_EXTERNAL_STORAGE\\\" android:maxSdkVersion=\\\"28\\\" tools:ignore=\\\"ScopedStorage\\\"/ ? ? ? ? ? ? ?uses-permission android:name=\\\"android.permission.MANAGE_EXTERNAL_STORAGE\\\"/ ?? ? ? ? uses-permission android:name=\\\"android.p

    2024年01月17日
    瀏覽(27)
  • Android13適配所有文件管理權(quán)限

    Android13適配所有文件管理權(quán)限

    很早之前在Android11上面就適配過所有文件管理權(quán)限,這次是海外版升級到Android13,由于選擇相冊用的是第三方庫,組內(nèi)的同事沒有上架Google的經(jīng)驗直接就提交代碼,雖然功能沒有問題,但是上架的時候被打回了,于是記錄一下適配工作. 絕大多數(shù)需要共享存儲空間訪問權(quán)限的

    2024年01月22日
    瀏覽(20)
  • Android 12 快速適配

    Android 12 快速適配

    Android 12 需要更新適配點并不多,本篇主要介紹最常見的兩個需要適配的點: android:exported[1] 和 SplashScreen[2] 。 它主要是設(shè)置 Activity 是否可由其他應(yīng)用的組件啟動 , “true” 則表示可以,而“false”表示不可以。 若為“false”,則 Activity 只能由同一應(yīng)用的組件或使用同一用戶

    2024年02月09日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包