Как запустить определенную c (явную) активность другого приложения - PullRequest
1 голос
/ 12 июля 2020

Я хочу запустить определенное c действие другого приложения из моего приложения. Например, в onCreate моего приложения я хочу запустить действие с именем Rolling (не основное) действие com.pas.webcam.pro. Я слышал, что для этого у вас должен быть контроль над обоими приложениями, потому что вы должны добавить фильтр намерений в манифест второго приложения. Это неправда, потому что приложения для запуска действий в магазине Google Play могут запускать непрерывную активность IP Webcam Pro.

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

Intent intent = new Intent(); intent.setComponent(new ComponentName("com.pas.webcam", "com.pas.webcam.RollingActivity")); startActivity(intent);

Я также пробовал варианты этого кода из других сообщений. Мое приложение всегда дает сбой, и я получаю варианты (в зависимости от используемого кода) следующая ошибка :

Произошла ошибка

Недействительная операция намерения. Невозможно найти явный класс активности {com.pas.webcam.pro/com.pas.webcam.pro.Rolling}; объявили ли вы это действие в своем AndroidManifest. xml?

Я поместил оба следующих элемента в свой Android манифест, и происходит то же самое:

<uses-permission android:name="android.permission.GET_INSTALLED_PACKAGES" />

<activity android:name="com.pas.webcam.pro.RollingActivity"

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

Редактировать: Вот активность приложения, которое я хочу запустить: https://i.stack.imgur.com/Fa7Xq.jpg

Изменить: Дэвид Вассер помог мне решить проблему, предоставив мне код, необходимый для решения проблемы. Это действительно работает! Всем, кто хочет запустить определенное c действие другого приложения с кодом, используйте это:

Intent intent = new Intent(); intent.setClassName("com.pas.webcam.pro", "com.pas.webcam.Rolling"); startActivity(intent);

Вы можете заменить com.pas.webcam.pro и Rolling на приложение и действие по вашему выбору, но этот метод действительно работает. Проблема решена! ?

1 Ответ

0 голосов
/ 14 июля 2020

Попробуйте следующее:

Intent intent = new Intent();
intent.setClassName("com.pas.webcam.pro", "com.pas.webcam.Rolling");
startActivity(intent);

Поскольку вы называете приложение «IP webcam pro», я предполагаю, что имя пакета - «com.pas.webcam.pro» (обнаружено Inte rnet исследования).

...