Android, как я могу использовать внешний APK в моем приложении? - PullRequest
0 голосов
/ 18 ноября 2011

Я создал два проекта. Первый, извлекает информацию о телефоне и показывает на экране. У меня есть .apk файл этого проекта (например test.apk ).

Тогда я создал второй проект. У этого есть кнопка на экране, и я хочу, чтобы, когда я нажимаю кнопку, первый проект запускается (показывает информацию о телефоне). Я добавил test.apk в этот проект, щелкнув правой кнопкой мыши корневой каталог проекта> Путь сборки> Настроить путь сборки> Добавить внешние JAR-файлы> test.apk

Затем в коде я вызвал это, используя намерение это мой код:

btn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent("com.in.test.MainActivity"); 
                startActivity(intent);
            }
        });

однако, когда я запускаю приложение, согласно logcat, я вижу следующую ошибку: 11-18 10: 09: 28.933: E / AndroidRuntime (2237): обработчик Uncaught: выход из основного потока из-за исключения uncaught 11-18 10: 09: 29.022: E / AndroidRuntime (2237): android.content.ActivityNotFoundException: не найдено действие для обработки намерения {act = com.in.test.MainActivity} 11-18 10: 09: 29.022: E / AndroidRuntime (2237): на android.app.Instrumentation.checkStartActivityResult (Instrumentation.java:1484) , , .

В чем и где моя проблема? Спасибо

обновление: В файле манифеста я добавил эту строку внутри элемента application:

<activity
            android:name="com.in.test.MainActivity" />

но результат все тот же. Я постараюсь следовать вашему предложению (используя фильтр намерений).

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

Вы не можете сделать это из Eclipse.Нужно установить test.apk, экспортировать нужное вам действие и иметь фильтр намерений для него.Что-то вроде:

 <intent-filter>
    <action android:name="com.infindo.test.MainActivity" />
    <category android:name="android.intent.category.DEFAULT" />
 </intent-filter>

Если у вас есть доступ к источнику test.apk, измените его.Если нет, вы можете использовать только те действия / намерения, которые он экспортирует.

0 голосов
/ 18 ноября 2011

Чтобы начать действие с явным намерением, как вы делаете (используя класс активности в конструкторе), действие должно быть объявлено в манифесте для вашего приложения и должно быть выполнено в вашем приложении.Вы не можете использовать отдельный файл apk для этого.

Способ сделать то, что вы хотите, - объявить фильтр намерений для действия в test.apk и запустить его, используя соответствующее намерение.Дополнительную информацию о том, как это сделать, см. В разделе руководства Фильтры Intent и Intent и документацию для класса Intent .

...