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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
DarkVortex
102 / 68 / 18
Регистрация: 07.07.2014
Сообщений: 239
#1

Запуск Activity из другого apk - Программирование Android

20.07.2016, 22:10. Просмотров 295. Ответов 11
Метки нет (Все метки)

Здравствуйте! Попытаюсь максимально собрать мысли в кучу и описать, то что мне надо. Есть скомпилированный apk файл без исходного кода, этот apk подключается в моем проекте с помощью DexClassLoader, далее с помощью reflection я оттуда тяну нужные классы и работаю с ними. Все было хорошо пока мне не понадобилось запустить activity этого apk. При попытке сделать это "влоб", естественно android сообщил мне что activity то в манифесте моем не прописана, да и откуда б ей там взяться, т.к. этой activity там и нет (ее вообще из интернета скачали между делом).
Собственно задача запустить activity из этого строннего apk, без модернизации самого apk? У кого есть идеи как это сделать? Может как-то с помощью AIDL, хотя они вроде в другую сторону работают.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2016, 22:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запуск Activity из другого apk (Программирование Android):

Изменение layout-элементов одного activity из другого activity - Программирование Android
Здравствуйте! Я хочу изменить размер или цвет текста TextView в одном activity из второго activity, каким образом мне можно это...

Из одного Activity получить значение другого Activity - Программирование Android
Запускаю активити: public class MainActivity extends Activity { ... ... Intent intent = new Intent(getBaseContext(),...

Доступ к БД из другого Activity. - Программирование Android
Очередной нубский вопрос. В главном активити есть dbHelper. Все хорошо. Хочу в одном активити показать результат запроса в виде...

Запуск стороннего .apk - Программирование Android
Подскажите как запустить из своего приложения, другое .apk(Зная его путь)

Вызов метода из другого Activity - Программирование Android
Здраствуйте. Помогите,пожалуйста, разобраться с несколькими вопросами: 1) Правильно ли, что "Настройки" я выделил в отдельный Activity ...

Функция activity из другого класса - Программирование Android
Есть главная activity и создаю класс для отрисовки графики: Activity: public class General extends Activity { @Override ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Борис Верещагин
60 / 39 / 12
Регистрация: 14.01.2016
Сообщений: 183
Завершенные тесты: 4
20.07.2016, 22:44 #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  [ТС] #3
Борис Верещагин, apk не установлен.
Цитата Сообщение от Борис Верещагин Посмотреть сообщение
возьми из манифеста этого apk и пропиши у себя.
так просто не работает, хотя может я плохо пытался. Создам маленький тестовый проект, для экспериментов.

Добавлено через 1 минуту
Цитата Сообщение от Борис Верещагин Посмотреть сообщение
так дизассемблируй и декомпилируй. apktool, dex2jar+jd-gui, fernflower и т.д.
я достаточно хорошо изучил smali чтоб писать прям на нем, но всеже редактировать apk не желательно.
den_droid
6 / 7 / 1
Регистрация: 18.05.2015
Сообщений: 190
20.07.2016, 22:50 #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();
                }
Борис Верещагин
60 / 39 / 12
Регистрация: 14.01.2016
Сообщений: 183
Завершенные тесты: 4
20.07.2016, 22:52 #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  [ТС] #6
Цитата Сообщение от Борис Верещагин Посмотреть сообщение
если активити exported то можешь так
Это работает только для установленных пакетов, у меня же по сути есть просто внешний dex файл.
Пока есть пара идей, пойду попробую, если получится расскажу
Vladimirys
307 / 204 / 25
Регистрация: 16.01.2010
Сообщений: 585
21.07.2016, 00:25 #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  [ТС] #8
Цитата Сообщение от Vladimirys Посмотреть сообщение
Вы реально хотите что бы Android предоставил такую дырень?
Честно говоря, да, и да предоставил. Но activity всетаки пришлось прописать в манифест, проблема была только в добавлении нового dex в dexpathlist, решение подсказали на SO https://stackoverflow.com/questions/...m-external-dex

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

Получить Activity другого приложения - Программирование Android
Подскажите пожалуйста, могу ли я из своего приложения получить Activity другого? Или же как можно из своего приложения запустить Activity...

Доступ к элементам Activity из другого класса - Программирование Android
Есть Activity, в её классе создаю экземпляр другого класса twoclass tw = new twoclass(); tw.start(MainActivity.this); и запускаю ...

Запуск сервиса после установки apk - Программирование Android
android запуск приложения после установки апк Добавлено через 8 минут точнее ни приложения а сервиса

Запуск сервиса после установки apk - Программирование Android
Подскажите пожалуйста. Как автоматически запустить сервис после установки apk файла ? Т. е. в приложении написан сервис. Мне нужно...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.07.2016, 22:06
Ответ Создать тему
Опции темы

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