Форум программистов, компьютерный форум CyberForum.ru

Запуск Activity из другого apk - Android

Восстановить пароль Регистрация
 
DarkVortex
102 / 68 / 18
Регистрация: 07.07.2014
Сообщений: 239
20.07.2016, 22:10     Запуск Activity из другого apk #1
Здравствуйте! Попытаюсь максимально собрать мысли в кучу и описать, то что мне надо. Есть скомпилированный apk файл без исходного кода, этот apk подключается в моем проекте с помощью DexClassLoader, далее с помощью reflection я оттуда тяну нужные классы и работаю с ними. Все было хорошо пока мне не понадобилось запустить activity этого apk. При попытке сделать это "влоб", естественно android сообщил мне что activity то в манифесте моем не прописана, да и откуда б ей там взяться, т.к. этой activity там и нет (ее вообще из интернета скачали между делом).
Собственно задача запустить activity из этого строннего apk, без модернизации самого apk? У кого есть идеи как это сделать? Может как-то с помощью AIDL, хотя они вроде в другую сторону работают.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Борис Верещагин
59 / 38 / 12
Регистрация: 14.01.2016
Сообщений: 183
Завершенные тесты: 4
20.07.2016, 22:44     Запуск Activity из другого apk #2

Не по теме:

Есть скомпилированный apk файл без исходного кода
так дизассемблируй и декомпилируй. apktool, dex2jar+jd-gui, fernflower и т.д.



да и откуда б ей там взяться, т.к. этой activity там и нет (ее вообще из интернета скачали между делом).
возьми из манифеста этого apk и пропиши у себя.
или если это главная activity или еще как-то зацепиться сможешь то через intent:
Java
1
2
Intent var = new Intent();
this.startActivity(var.setPackage("com.example.another").addCategory("android.intent.category.LAUNCHER"));
DarkVortex
102 / 68 / 18
Регистрация: 07.07.2014
Сообщений: 239
20.07.2016, 22:48  [ТС]     Запуск Activity из другого apk #3
Борис Верещагин, apk не установлен.
Цитата Сообщение от Борис Верещагин Посмотреть сообщение
возьми из манифеста этого apk и пропиши у себя.
так просто не работает, хотя может я плохо пытался. Создам маленький тестовый проект, для экспериментов.

Добавлено через 1 минуту
Цитата Сообщение от Борис Верещагин Посмотреть сообщение
так дизассемблируй и декомпилируй. apktool, dex2jar+jd-gui, fernflower и т.д.
я достаточно хорошо изучил smali чтоб писать прям на нем, но всеже редактировать apk не желательно.
den_droid
6 / 7 / 1
Регистрация: 18.05.2015
Сообщений: 176
20.07.2016, 22:50     Запуск Activity из другого apk #4
Попробуйте это:
Java
1
2
3
4
5
6
try {
                    Intent intentApp = this.getPackageManager().getLaunchIntentForPackage("com.example.cyberforum"));
                    startActivity(intentApp);
                } catch (Exception e) {
                    Toast.makeText(getApplicationContext(), "Приложение не найдено. Выберите другое.", Toast.LENGTH_LONG).show();
                }
Борис Верещагин
59 / 38 / 12
Регистрация: 14.01.2016
Сообщений: 183
Завершенные тесты: 4
20.07.2016, 22:52     Запуск Activity из другого apk #5
DarkVortex, если активити exported то можешь так
Java
1
2
3
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.example", "com.example.MyExampleActivity"));
startActivity(intent);
Создам маленький тестовый проект, для экспериментов.
+++

Добавлено через 57 секунд

Не по теме:

den_droid, это то-же откроет главную активити у которой фильтр лаунчер...

DarkVortex
102 / 68 / 18
Регистрация: 07.07.2014
Сообщений: 239
20.07.2016, 22:55  [ТС]     Запуск Activity из другого apk #6
Цитата Сообщение от Борис Верещагин Посмотреть сообщение
если активити exported то можешь так
Это работает только для установленных пакетов, у меня же по сути есть просто внешний dex файл.
Пока есть пара идей, пойду попробую, если получится расскажу
Vladimirys
292 / 189 / 19
Регистрация: 16.01.2010
Сообщений: 527
21.07.2016, 00:25     Запуск Activity из другого apk #7
Да ничего вы не расскажите. Вы реально хотите что бы Android предоставил такую дырень? Приходи "мол запускай чего хош." Хочешь эту активность, а хочешь ту? Активность можно запустить двумя способами - явно (само собой тут "вредный манифест вмешается").
Java
1
2
Intent intent = new Intent(HelloWorld.this, AboutActivity.class);
startActivity(intent);
И второй способ - неявный. Как например открыть страницу установленным браузером
Java
1
2
3
Uri address = Uri.parse("http://блаблабла");
Intent openlinkIntent = new Intent(Intent.ACTION_VIEW, address);
startActivity(openlinkIntent)
Вот собственно и все способы. Вам, бы может, второй способ и помог, да только там нужно действия согласовать с активностью, т.к. активность должна сообщать - мол я могут то - то и то - то. А вы запускаете сообщающее намерение, и когда намерение и возможность активность совпадут она будет предложена для действия. Так как то.
DarkVortex
102 / 68 / 18
Регистрация: 07.07.2014
Сообщений: 239
21.07.2016, 12:08  [ТС]     Запуск Activity из другого apk #8
Цитата Сообщение от Vladimirys Посмотреть сообщение
Вы реально хотите что бы Android предоставил такую дырень?
Честно говоря, да, и да предоставил. Но activity всетаки пришлось прописать в манифест, проблема была только в добавлении нового dex в dexpathlist, решение подсказали на SO https://stackoverflow.com/questions/...m-external-dex

Добавлено через 10 минут
Более того, я ожидал что будет проблема с загрузкой ресурсов из стороннего apk, но ее к счастью нет.
Vladimirys
292 / 189 / 19
Регистрация: 16.01.2010
Сообщений: 527
21.07.2016, 17:43     Запуск Activity из другого apk #9
Ага. Как тот конь которого цыган почти приучил не есть, только вот помер. Так и тут, Все решил но с одним НО.
Activities must be pre-defined in the application's manifest.
Собственно как у нас писали в конце задачи по геометрии - Ч.Т.Д.
DarkVortex
102 / 68 / 18
Регистрация: 07.07.2014
Сообщений: 239
21.07.2016, 21:20  [ТС]     Запуск Activity из другого apk #10
Удалите пожалуйста тему
NanoDroid
0 / 0 / 1
Регистрация: 16.06.2016
Сообщений: 12
21.07.2016, 21:24     Запуск Activity из другого apk #11
Особенно не разбирался в этом, но может это вам поможет: Github.com: DynamicLoadApk
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2016, 22:06     Запуск Activity из другого apk
Еще ссылки по теме:

Доступ к элементам Activity из другого класса Android
Функция activity из другого класса Android
Android Восстановление позиции ListView по возвращении из другого Activity
Android Как передать данные в Activity из другого класса
Получение String из другого класса в Activity widget Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
DarkVortex
102 / 68 / 18
Регистрация: 07.07.2014
Сообщений: 239
21.07.2016, 22:06  [ТС]     Запуск Activity из другого apk #12
NanoDroid, спасибо, но уже сам сделал)
Yandex
Объявления
21.07.2016, 22:06     Запуск Activity из другого apk
Ответ Создать тему
Опции темы

Текущее время: 09:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru