缺少 BluetoothAdapter.isEnabled.BLUETOOTH 所需的权限
missing permissions required by BluetoothAdapter.isEnabled.BLUETOOTH
我将蓝牙添加到我的应用程序,但 运行 遇到以下问题。当我执行代码时:
BluetoothAdapter bluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
if (bluetoothAdapter == null) {
Toast.makeText(getApplicationContext(),"Device doesnt Support Bluetooth",Toast.LENGTH_SHORT).show();
}
if(!bluetoothAdapter.isEnabled()) {
Intent enableAdapter = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableAdapter, 0);
}
错误在以下行:
if(!bluetoothAdapter.isEnabled())
错误:
Missing permissions required by BluetoothAdapter.isEnabled :android.permissions.BLUETOOTH
我向 android 清单文件添加了以下权限:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<permission android:name="android.permission.BLUETOOTH" android:label="BLUETOOTH" />
<permission android:name="android.permission.BLUETOOTH_ADMIN" />
但我仍然遇到同样的问题。你知道我做错了什么吗?
假设您有一个按钮,然后单击它,蓝牙需要打开。这是一个简单的示例,您将如何为 Android 6.0 及更高版本执行此操作。
首先,在 Activity
/Fragment
:
中声明这个变量
public static final int PERMISSION_ASK = 1001;
现在,假设此按钮将启用蓝牙。
setOnClickListener
:
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if(isBluetoothPermissionGranted()) {
// app already has required permissions
// do some task here
} else {
// app does not have permission yet.
// ask for permissions
askForBluetoothPermissions();
}
} else {
// Android version below 6.0, no need to check or ask for permission
// do some task here
}
}
});
正在检查应用程序是否已经拥有所需的权限:
@RequiresApi(api = Build.VERSION_CODES.M)
private boolean isBluetoothPermissionGranted() {
boolean granted = false;
int bluetoothGranted = checkSelfPermission(Manifest.permission.BLUETOOTH);
int bluetoothAdminGranted = checkSelfPermission(Manifest.permission.BLUETOOTH_ADMIN);
if(bluetoothGranted == PackageManager.PERMISSION_GRANTED &&
bluetoothAdminGranted == PackageManager.PERMISSION_GRANTED) {
granted = true;
}
return granted;
}
如果所需的权限未被授予,请按以下方式申请:
@RequiresApi(api = Build.VERSION_CODES.M)
private void askForBluetoothPermissions() {
String[] permissions = new String[] {
Manifest.permission.BLUETOOTH,
Manifest.permission.BLUETOOTH_ADMIN
};
requestPermissions(permissions, PERMISSION_ASK);
}
最后,您可以通过以下方式确认用户是否授予您权限:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case PERMISSION_ASK:
if(grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED) {
// all requested permissions were granted
// perform your task here
} else {
// permissions not granted
// DO NOT PERFORM THE TASK, it will fail/crash
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
break;
}
}
希望对您有所帮助
- 您只需要
<uses-permission>
标记,因为您正在使用权限。您不需要 <permissions>
标签,因为这不是您的自定义权限。
- 也许您将
<uses-permission>
标签放在清单中的错误元素中,但我无法根据您提供的信息说任何其他内容
- 由于您的 bluetoothAdapter 可以为空,请添加到第二个 IF 空指针检查,或者在第一个 IF
中添加一个 RETURN
- 有
<uses-feature>
标签也不错
对于 Android 6.0 及更高版本,您必须将以下内容添加到清单文件
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<permission android:name="android.permission.BLUETOOTH" android:label="BLUETOOTH" />
<permission android:name="android.permission.BLUETOOTH_ADMIN" />
<permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
我将蓝牙添加到我的应用程序,但 运行 遇到以下问题。当我执行代码时:
BluetoothAdapter bluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
if (bluetoothAdapter == null) {
Toast.makeText(getApplicationContext(),"Device doesnt Support Bluetooth",Toast.LENGTH_SHORT).show();
}
if(!bluetoothAdapter.isEnabled()) {
Intent enableAdapter = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableAdapter, 0);
}
错误在以下行:
if(!bluetoothAdapter.isEnabled())
错误:
Missing permissions required by BluetoothAdapter.isEnabled :android.permissions.BLUETOOTH
我向 android 清单文件添加了以下权限:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<permission android:name="android.permission.BLUETOOTH" android:label="BLUETOOTH" />
<permission android:name="android.permission.BLUETOOTH_ADMIN" />
但我仍然遇到同样的问题。你知道我做错了什么吗?
假设您有一个按钮,然后单击它,蓝牙需要打开。这是一个简单的示例,您将如何为 Android 6.0 及更高版本执行此操作。
首先,在 Activity
/Fragment
:
public static final int PERMISSION_ASK = 1001;
现在,假设此按钮将启用蓝牙。
setOnClickListener
:
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if(isBluetoothPermissionGranted()) {
// app already has required permissions
// do some task here
} else {
// app does not have permission yet.
// ask for permissions
askForBluetoothPermissions();
}
} else {
// Android version below 6.0, no need to check or ask for permission
// do some task here
}
}
});
正在检查应用程序是否已经拥有所需的权限:
@RequiresApi(api = Build.VERSION_CODES.M)
private boolean isBluetoothPermissionGranted() {
boolean granted = false;
int bluetoothGranted = checkSelfPermission(Manifest.permission.BLUETOOTH);
int bluetoothAdminGranted = checkSelfPermission(Manifest.permission.BLUETOOTH_ADMIN);
if(bluetoothGranted == PackageManager.PERMISSION_GRANTED &&
bluetoothAdminGranted == PackageManager.PERMISSION_GRANTED) {
granted = true;
}
return granted;
}
如果所需的权限未被授予,请按以下方式申请:
@RequiresApi(api = Build.VERSION_CODES.M)
private void askForBluetoothPermissions() {
String[] permissions = new String[] {
Manifest.permission.BLUETOOTH,
Manifest.permission.BLUETOOTH_ADMIN
};
requestPermissions(permissions, PERMISSION_ASK);
}
最后,您可以通过以下方式确认用户是否授予您权限:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case PERMISSION_ASK:
if(grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED) {
// all requested permissions were granted
// perform your task here
} else {
// permissions not granted
// DO NOT PERFORM THE TASK, it will fail/crash
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
break;
}
}
希望对您有所帮助
- 您只需要
<uses-permission>
标记,因为您正在使用权限。您不需要<permissions>
标签,因为这不是您的自定义权限。 - 也许您将
<uses-permission>
标签放在清单中的错误元素中,但我无法根据您提供的信息说任何其他内容 - 由于您的 bluetoothAdapter 可以为空,请添加到第二个 IF 空指针检查,或者在第一个 IF 中添加一个 RETURN
- 有
<uses-feature>
标签也不错
对于 Android 6.0 及更高版本,您必须将以下内容添加到清单文件
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<permission android:name="android.permission.BLUETOOTH" android:label="BLUETOOTH" />
<permission android:name="android.permission.BLUETOOTH_ADMIN" />
<permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<permission android:name="android.permission.ACCESS_COARSE_LOCATION" />