我如何处理蓝牙启用对话框上的“ 拒绝 ”按钮?我尝试使用 OnDismissListenerOnCancelListener 甚至尝试过 onActivityResult 但没有奏效。代码是:

    private BluetoothAdapter mBluetoothAdapter;
    private static final int REQUEST_ENABLE_BT = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (isBleSupportedOnDevice()) {
            initializeBtComponent();

        } else {
            finish();
        }
    }

    private boolean isBleSupportedOnDevice() {
        if (!getPackageManager().hasSystemFeature(
                PackageManager.FEATURE_BLUETOOTH_LE)) {
            Toast.makeText(this, "BLE is not supported in this device.",
                    Toast.LENGTH_SHORT).show();
            return false;
        }
        return true;
    }

    private void initializeBtComponent() {
        final BluetoothManager bluetoothManager =
            (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
        mBluetoothAdapter = bluetoothManager.getAdapter();
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (!mBluetoothAdapter.isEnabled()) {
            Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
            startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
        }
    }

此代码提示用户对话框,直到他按下“ Allow ”或“ OK ”按钮,但一旦他按下“ Deny ”或“ Cancel ”按钮,我就必须回到之前的 Activity 。我该怎么做呢?当我按下“ Deny ”按钮时,是否有任何函数被调用?

最佳答案

您需要覆盖 onActivityResult 方法。

您正在使用常量 REQUEST_ENABLE_BT 传递 requestCode

因此,当用户在您的 Activity 中调用 onActivityResult 方法之后按下允许或拒绝按钮时。

@Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  // TODO Auto-generated method stub
  if(requestCode == REQUEST_ENABLE_BT){
   startBluetoothStuff();
  }

 }

在上面的代码中检查回调是否针对相同的请求代码。

所以你的理想流程是这样的
boolean isBluetoothManagerEnabled()
{
  // Some code
}

public void startBluetoothStuff()
{
   if(isBluetoothManagerEnabled())
   {
      // Do whatever you want to do if BT is enabled.
   }
   else
   {
       Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
       startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
   }
}

关于安卓 : Deny button pressed on Bluetooth enabling dialog box,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20652211/

10-09 00:02