2014-07-01 10 views
0

Mixare имеет приложение (с открытым исходным кодом), которое позволяет просматривать POI с вашей камерой. Это дает возможность вызвать приложение из ваших приложений благодаря этому:Android - вызов активности интегрированного приложения

Intent i = new Intent(); 
i.setAction(Intent.ACTION_VIEW); 
i.setDataAndType(Uri.parse("http://ws.geonames.org/findNearbyWikipediaJSON"), "application/mixare-json"); 
startActivity(i); 

Проблема заключается в том, что пользователь должен иметь приложение, установленное в дополнение к мое приложение, так что я сделал, что я импортировал все приложения в пределах моего, со всеми его ресурсами и т. д.
Но я не знаю, как назвать основную деятельность MainActivity.java, которая находится в пакете org.mixare.
Как я могу называть это занятие? И как я объявляю это в манифесте?

ответ

2

Если вы добавили код и ресурсы приложения в свое приложение, вам следует объявить и называть его деятельностью, поскольку они были вашими собственными.

Intent i = new Intent(this, MainActivity.class); 
startActivity(i); 

Это, как говорится, не является тривиальной задачей. Вам нужно объединить AndroidManifest и может попасть в неприятности, если вы не знаете, что делаете. Например, пользователь может добавить приложение Mixare в дополнение к вашему, и намерение может иметь такие же действия и т. Д.

Существует альтернатива этому. Вы можете проверить, установлено ли приложение Mixare, и если вы не просите пользователя сделать это. Это может быть больше «андроидным способом делать вещи», в зависимости от вашего варианта использования.

1

Посмотрите, http://code.google.com/p/mixare/wiki/DisplayYourOwnData как начать смешивание через намерение.

В качестве альтернативы вы можете использовать mixare в качестве проекта библиотеки, а затем вызвать его класс MainActivity непосредственно из приложения как Using an Android library project Activity within another project.

Цитируя же здесь -

объявляя компонентов библиотеки в файле манифеста

В файле манифеста приложения проекта, вы должны добавить декларации всех компонентов, что приложение будет использовать то есть , импортированных из проекта библиотеки. Например, вы должны объявить любые ,,, и т. Д., А также , и аналогичные элементы.

Декларации должны содержать ссылки на компоненты библиотеки по их именам пакетов с полным набором характеристик, где это необходимо.

Тогда вы можете определенно назвать,

Intent intent = new Intent(this, MainActivity.class); 
startActivity(intent); 
0
//appPackageName,appClassName can be found in Logcat 
ComponentName component = new ComponentName("appPackageName","appClassName"); 
Intent intent = new Intent(); 
intent.setComponent(component); 
startActivity(intent); 
1

Нет, это очень трудно сделать 2 + 2 = 4 вида добавления файлов манифеста и т.д.

я вижу существует два способа справиться с этим:

  1. Использование внешнего приложения: проверьте, имеет ли пользователь внешний интерфейс которое вы хотите, чтобы он имел. Иначе, направьте его по правильной ссылке.Вы можете получить имя пакета publiched приложения и использовать его в этой функции:

    private boolean appInstalledOrNot(String uri) { PackageManager pm = getPackageManager(); boolean app_installed = false; try { pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES); app_installed = true; } catch (PackageManager.NameNotFoundException e) { app_installed = false; } return app_installed ; }

  2. Объединяя код: Это не имеет никакого прямого/правильный ответ. Вам нужно изучить код и интегрировать его с существующим.

Смежные вопросы