为什么我的Android应用程序的蓝牙权限对话框后面会出现一个文本框?

时间:2017-09-14 13:45:29

标签: android bluetooth android-ble

我正在编写一个需要启用蓝牙的应用程序,警报对话框后面会出现一个奇怪的“标题”文本集,要求启用蓝牙。文本用粗体字母表示“蓝牙权限请求”,一旦警告对话框消失,此文本也会在半秒后发出。任何人都知道为什么会出现这个文本以及如何摆脱它?

这是设置意图的代码。

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();
                    });
    }
}

enter image description here

enter image description here

权限代码

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();
}

0 个答案:

没有答案