【问题标题】:Need example android Bluetooth permission code需要示例android蓝牙权限代码
【发布时间】:2022-08-04 14:27:48
【问题描述】:

我需要一个蓝牙权限的示例 java 代码。安卓 12。

我知道我必须把它放在 AndroidManifest.xml

<uses-permission android:name=\"android.permission.BLUETOOTH\"/>

根据我的研究,我认为我必须使用这些工具让我的手机向我询问蓝牙权限:

ActivityCompat
ContextCompat
PackageManager
onRequestPermissionsResult

但是经过数小时的测试后没有运气。 我什至尝试使用来自 GitHub 的库为我请求“简单”权限,但没有运气:

https://github.com/googlesamples/easypermissions https://github.com/guolindev/PermissionX

我尝试降低我的目标 SDK 版本,所以我不需要要求用户输入,但“AndroidX”给了我一个错误,告诉我它与较低的 SDK 不兼容。

如果你有一个基本的工作蓝牙应用程序 java 代码,这将对我有很大帮助,这样我就可以弄清楚如何编写我自己的应用程序。


  • 请提供足够的代码,以便其他人可以更好地理解或重现该问题。

标签: android android-permissions android-bluetooth android-12


【解决方案1】:

对于 Android 12 上的新蓝牙权限,您需要以下权限:

<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />

您可以参考this blog post了解更多详情。

【讨论】:

    【解决方案2】:

    对于 Android 12 上的蓝牙权限,您需要这些权限,具体取决于您的使用情况:

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.NFC" />
    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
    <uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
    <uses-feature android:name="android.hardware.nfc" android:required="true" />
    <uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />
    

    在您的活动中,您可以添加此项以检查是否允许权限:

    private static final int ACCESS_COARSE_LOCATION_RESULT_CODE = 4;
        private static final int BLUETOOTH_RESULT_CODE = 5;
        private static final int DANGEROUS_RESULT_CODE = 1;
    
    if (ContextCompat.checkSelfPermission(this,
                        Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                    ActivityCompat.requestPermissions(this,
                            new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},
                            ACCESS_COARSE_LOCATION_RESULT_CODE);
                }
                else if (ContextCompat.checkSelfPermission(this,
                        Manifest.permission.BLUETOOTH) != PackageManager.PERMISSION_GRANTED) {
                    ActivityCompat.requestPermissions(this,
                            new String[]{Manifest.permission.BLUETOOTH},
                            BLUETOOTH_RESULT_CODE);
                }
                else if(ContextCompat.checkSelfPermission(this,
                        Manifest.permission.BLUETOOTH_SCAN) != PackageManager.PERMISSION_GRANTED){
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
                        ActivityCompat.requestPermissions(this,
                                new String[]{Manifest.permission.BLUETOOTH_SCAN},
                                DANGEROUS_RESULT_CODE);
                    }
                }
                else if(ContextCompat.checkSelfPermission(this,
                        Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED){
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
                        ActivityCompat.requestPermissions(this,
                                new String[]{Manifest.permission.BLUETOOTH_CONNECT},
                                DANGEROUS_RESULT_CODE);
                    }
                }
    

    想了解更多,可以查看here。希望这会对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-24
      • 1970-01-01
      • 2023-02-10
      • 1970-01-01
      • 2013-09-01
      • 2021-11-26
      相关资源
      最近更新 更多