onActivityResult в MainActivity будет маскировать события из другого класса - PullRequest
0 голосов
/ 27 сентября 2019

Я создаю приложение React Native.Мне нужно реализовать подсказку о запросе на получение номера телефона пользователя с помощью API-интерфейса поиска SMS.Это мой код

SMSretreivermodule.java

@ReactMethod
public void requestHint(Promise requestHintSuccess) {
    Activity currentActivity = getCurrentActivity();
    requestHintCallback = requestHintSuccess;

    Log.e(TAG, "Requesting hint rn");
    if (currentActivity == null) {
        requestHintCallback.reject("No Activity Found");
        return;
    }
    try {
        HintRequest hintRequest = new HintRequest.Builder().setPhoneNumberIdentifierSupported(true).build();
        PendingIntent intent = Auth.CredentialsApi.getHintPickerIntent(apiClient, hintRequest);
        currentActivity.startIntentSenderForResult(intent.getIntentSender(), RESOLVE_HINT, null, 0, 0, 0);

    } catch (Exception e) {
        //System.out.println(e);
        Log.e(TAG, e.getMessage());
        requestHintCallback.reject(e);
    }
}

Я слушаю результат, подобный этому, в том же классе

SMSretreivermodule.java

 private final ActivityEventListener mActivityEventListener = new BaseActivityEventListener() {
    public void onActivityResult(Activity activity,int requestCode, int resultCode, Intent data) {
        Log.d(TAG,"callback");
        if (requestCode == RESOLVE_HINT) {
            if (resultCode == Activity.RESULT_OK) {
                Credential credential = data.getParcelableExtra(Credential.EXTRA_KEY);
                // credential.getId(); <-- will need to process phone number string
                requestHintCallback.resolve(credential.getId());
            }
        }
    }

};

Проблема в том, что у меня есть onActivityResult в MainActivity.java.Это маскирует результат поступления в SMS-сообщение SMSretreivermodule.java и скорее возвращает результат здесь.

MainActivity.java

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Log.e(TAG, String.valueOf(requestCode));
    switch (requestCode) {
        case REQUEST_LOCATION:
            initBTScanning();

            break;

        case REQUEST_BLUETOOTH:
            initBTScanning();
            break;

        case RESOLVE_HINT:
            Log.e(TAG, "Here");
            if (resultCode == Activity.RESULT_OK) {
                Credential credential = data.getParcelableExtra(Credential.EXTRA_KEY);
                // credential.getId(); <-- will need to process phone number string
                Log.e(TAG, credential.getId());
                //requestHintCallback.resolve(credential.getId());
            }
            break;
    }
}

Как получить результат в Smsretrivermodule.java вместо моей MainActivity?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...