以下是一个简单的蓝牙配对安卓项目的AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.bluetoothglassend"
android:versionCode="1"
android:versionName="1.0" >
<uses-permission
android:name="android.permission.BLUETOOTH"
android:maxSdkVersion="19" />
<uses-permission
android:name="android.permission.BLUETOOTH_ADMIN"
android:maxSdkVersion="19" />
<uses-permission
android:name="android.permission.BLUETOOTH_PRIVILEGED"
android:maxSdkVersion="19" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
虽然不是必需的,但我已经为我能找到的所有 BLUETOOTH 参数添加了权限。然而,我得到这个错误:
java.lang.SecurityException: Need BLUETOOTH permission: Neither user 10145 nor current process has android.permission.BLUETOOTH.
有什么想法吗?
作为附加说明,我在 Android Studio 中从 Intellij 导入了这个项目
最佳答案
maxSdkVersion 属性 version 用于告知应该向您的应用授予此权限的最高 API 级别。如果从某个 API 级别开始不再需要您的应用所需的权限,则设置此属性很有用。
例如,从 Android 4.4(API 级别 19)开始,当您的应用想要写入其自己的外部存储上的应用特定目录(由 getExternalFilesDir 提供的目录)时,您的应用不再需要请求 WRITE_EXTERNAL_STORAGE 权限()).但是,API 级别 18 及更低级别需要该权限。因此,您可以声明此权限只需要达到 API 级别 18,声明如下:
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
这样,从 API 级别 19 开始,系统将不再授予您的应用 WRITE_EXTERNAL_STORAGE 权限。
所以错误是即使 Lollipop 也需要您请求访问蓝牙的许可。
关于Android 权限 BLUETOOTH list 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29786291/