Неверный код результата после onActivityResult () для включения Bluetooth и обнаружения - PullRequest
1 голос
/ 21 июня 2019

У меня есть активность, когда я прошу включить Bluetooth и режим обнаружения.Запросы выполняются правильно и принимаются onactivityresult().Проблема в запросе на обнаружение.

Если я нажимаю на отклонить, тогда RESULT_CANCELED берется правильно, в то время как, если я нажимаю на разрешить, код результата равен 120 и, следовательно, это не RESULT_OK, и я не могу начать действие, это нормально, чтоэто 120, а не RESULT_OK?

MyActivity

public class TransitionActivity extends AppCompatActivity {
    private static final int ENABLE_REQUEST = 0;
    private static final int DISCOVER_REQUEST = 1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_transition);

        BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        if(bluetoothAdapter == null){ //bluetooth not supported
            Toast.makeText(this, "Bluetooth not supported.", Toast.LENGTH_SHORT).show();
            finish();
        }

        if(!bluetoothAdapter.isEnabled()){
            Intent i = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
            startActivityForResult(i,ENABLE_REQUEST);

        }
        if(!bluetoothAdapter.isDiscovering()){
            Intent i = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
            startActivityForResult(i,DISCOVER_REQUEST);
        }

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(requestCode == ENABLE_REQUEST){
            if(resultCode == RESULT_OK){
            }
            if(resultCode == RESULT_CANCELED){
                Toast.makeText(this, "You need to enable the bluetooth.", Toast.LENGTH_SHORT).show();
                finish();
            }
        }
        if(requestCode == DISCOVER_REQUEST){
            System.out.println("RESULT CODE" + resultCode); //it is 120
            if(resultCode ==  RESULT_OK){ //skipped
                Intent secondActivity = new Intent(this, com.project.secondActivity.class);
                this.startActivity(secondActivity);
            }
            if(resultCode == RESULT_CANCELED){
                finish();
            }
        }
    }
}

1 Ответ

0 голосов
/ 21 июня 2019

Значение resultCode совпадает с продолжительностью обнаружения EXTRA_DISCOVERABLE_DURATION, переданной в Intent. и по умолчанию продолжительность составляет 120. Так что все в порядке.

Если вы начнете заниматься вот так

Intent i = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
i.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 240);
startActivityForResult(i,DISCOVER_REQUEST);

Возвращается 240 в качестве кода результата.

...