Можно ли запустить другое приложение из мгновенного приложения? - PullRequest
0 голосов
/ 02 апреля 2020

Обычно, конечно, это просто : getLaunchIntentForPackage("com.package") дает Намерение, которое вы можете просто передать startActivity().

Но при выполнении в приложении для мгновенных сообщений , getLaunchIntentForPackage() возвращает ноль, даже если целевое приложение установлено!

Глядя на комментарии на связанный вопрос, я не единственный, кто затрагивает эту проблему или ограничение. Тем не менее, не было никаких решений, и, похоже, никаких сомнений по этому поводу пока нет.

Есть ли способ обойти это ограничение?

1 Ответ

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

Просмотр Google Play Instant документация для разработчиков Немного больше, я нашел объяснение:

Google Play Instant запускает пакеты приложений с мгновенным включением в специальном виде SE Linux песочница для дополнительной безопасности. Эта песочница разрешает подмножество разрешений, а также ограниченные типы взаимодействий с другими приложениями.

И, более конкретно, при каких обстоятельствах доступны другие приложения * :

Доступ к установленным приложениям

При разработке мгновенного опыта имейте в виду, что он не может взаимодействовать с установленными приложениями на устройстве, если одно из верно следующее:

  • Для одного или нескольких действий в установленном приложении для его элемента android:visibleToInstantApps установлено значение true - Этот элемент доступен для приложений, работающих с Android 8.0 (API уровень 26) или выше .
  • Установленное приложение содержит фильтр намерений, включающий CATEGORY_BROWSABLE.
  • Мгновенный опыт - отправка намерения с использованием действия ACTION_SEND, ACTION_SENDTO или ACTION_SEND_MULTIPLE.

Это объясняет это и кажется достаточно разумным ,

Я выясню, работают ли некоторые из этих работ в моем случае, и сообщу позже ...

Редактировать : да, android:visibleToInstantApps работает!

В моем случае я пытался запустить другое приложение той же компании-клиента, то есть я тоже имею контроль над этой кодовой базой.

В AndroidManifest целевого приложения добавьте android:visibleToInstantApps="true" к одному из действий. Это работает на Android 8 и выше, и может использоваться, даже если minSdkVersion ниже.

...