Android Permission BLUETOOTH Manifest错误

时间:2015-04-22 01:45:05

标签: android gradle android-manifest

以下是用于简单蓝牙配对Android项目的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.

任何想法?

作为补充说明,我在Intellij的Android Studio中导入了这个项目

2 个答案:

答案 0 :(得分:4)

maxSdkVersion属性版本用于告知应该为您的应用授予此权限的最高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权限。

所以错误的是,即使棒棒糖也需要你获得访问蓝牙的许可。

答案 1 :(得分:0)

看起来这是一个非常简单的解决方案。我正在测试Android Lollipop(&gt; maxSdkVersion)因此出错。