我正在编写一个需要启用蓝牙的应用程序,警报对话框后面会出现一个奇怪的“标题”文本集,要求启用蓝牙。文本用粗体字母表示“蓝牙权限请求”,一旦警告对话框消失,此文本也会在半秒后发出。任何人都知道为什么会出现这个文本以及如何摆脱它?
这是设置意图的代码。
private void ensureBluetoothEnabled() {
switch (mRxBleClient.getState()) {
case BLUETOOTH_NOT_ENABLED:
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
break;
case READY:
showScanFragment();
}
}
这是后续运行的代码。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == REQUEST_ENABLE_BT) {
if(RESULT_OK == resultCode)
showScanFragment();
else
new AlertDialog.Builder(this).setMessage("Bluetooth is required to use this service.")
.setPositiveButton("OK", (dialog, which) -> {
ensureBluetoothEnabled();
dialog.dismiss();
});
}
}
权限代码
private static final int REQUEST_PERMISSIONS = 10;
private static final String[] PERMISSIONS = new String[]{
Manifest.permission.BLUETOOTH,
Manifest.permission.BLUETOOTH_ADMIN,
};
@Override
protected void onCreate(Bundle savedInstanceState) {
((MainApplication) getApplication()).getRxBleClientComponent().inject(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
requestPermissions(PERMISSIONS, REQUEST_PERMISSIONS);
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
for(int i : grantResults)
if(i == PackageManager.PERMISSION_DENIED) {
Toast.makeText(this, "All permissions are required. App will close.", Toast.LENGTH_LONG).show();
finish();
return;
}
ensureBluetoothEnabled();
}