queryIntentActivities возвращает разные результаты с одинаковым кодом - PullRequest
0 голосов
/ 17 апреля 2020

Я реализую всплывающий мост, как описано здесь: https://github.com/braintree/popup-bridge-android

Пример проекта работает нормально, но у меня проблемы с получением моста для работы в моем приложении. Я следовал инструкциям и добавил следующий необходимый код в мой AndroidManifest.xml файл.

<activity android:name="com.braintreepayments.popupbridge.PopupBridgeActivity"
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="${applicationId}.popupbridge" />
    </intent-filter>
</activity>

Дело в том, что работает на одном эмуляторе, но не на любых других устройствах . Я попытался очистить кэш и перезапустить Android Studio и стереть данные эмуляторов, с которыми он не работает.

После некоторой отладки я обнаружил, что библиотека popup-bridge-android зависит от библиотеки browser-switch-android : https://github.com/braintree/browser-switch-android

Ниже приведена часть кода, где он работает неправильно. В эмуляторе, где работает мост, mContext.getPackageManager().queryIntentActivities(intent, 0) находит 1 действие, а на других устройствах - 0. Я не понимаю, почему он не находит никаких действий. Он должен соответствовать активности, которую я установил в манифесте, и найти ее.

private boolean isReturnUrlSetup() {
        Intent intent = new Intent(Intent.ACTION_VIEW)
                .setData(Uri.parse(getReturnUrlScheme() + "://"))
                .addCategory(Intent.CATEGORY_DEFAULT)
                .addCategory(Intent.CATEGORY_BROWSABLE);

        return availableActivities(intent).size() == 1;
    }

    private List<ResolveInfo> availableActivities(Intent intent) {
        return mContext.getPackageManager()
                .queryIntentActivities(intent, 0);
    }

Подводя итог: Проблема в том, что queryIntentActivities(intent, 0) возвращает разные результаты для одного и того же кода.

Что может быть причиной этого? Большое вам спасибо за ваше время.

1 Ответ

0 голосов
/ 21 апреля 2020

Я не уверен, почему это происходило, но основная проблема была решена, поэтому у меня больше нет этой проблемы. Причина, по которой оно работало на одном устройстве, возможно потому, что оно работало раньше и что-то было кэшировано.

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