2012-03-23 4 views
5

Можно создать дубликат:
Android Launch an application from another applicationLaunch активность другого приложения Android

У меня возникли проблемы, и это следующая:

У меня есть два приложения, и я хотите запустить один из видов деятельности из одного приложения другим ... Я приведу пример:

первый пакет приложений:

"es.wul4.android.app1"

второе приложение пакета:

"es.wul4.android.app2"

Я хочу запустить действие, класс которого называется "Identificar" из приложения 1

Эта деятельность НЕ является основной. Я судил doind что:

Intent intent = getPackageManager().getLaunchIntentForPackage("es.wul4.app2.Identificar"); 
startActivity(intent); 

Но что я получаю делать, что нет ничего, он говорит мне, что приложение существует это не распространяется.

Если я пытаюсь сделать это:

getPackageManager().getLaunchIntentForPackage("es.wul4.app2"); 
startActivity(intent); 

И запустить один вид деятельности, но главный один ........

Как я могу запустить эту конкретную активность внутри пакета " es.wul4.app2.Identificar "??

Thank u очень много.

+0

Вы хотите начать конкретную деятельность? – Praveenkumar

ответ

15

Что вам нужно используйте intent-filters. Предположим, что деятельность, которую нужно запустить, находится в пакете launch.me. Внутри этого приложения проявляются все действия (основные или другие), которые будут декалированы с помощью тега <activity>.
Предполагая, что действие, которое вы хотите запустить, находится внутри файла класса Launchme. Тогда часть манифеста будет что-то вроде:

<activity android:name="launch.me.Launchme" 
       android:label="@string/app_name"> 
<intent-filter> 
      <action android:name="launch.me.action.LAUNCH_IT"/> 
      <category android:name="android.intent.category.DEFAULT"/> 
</intent-filter> 
</activity> 

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

Intent i=new Intent(); 
i.setAction("launch.me.action.LAUNCH_IT"); 
startActivityForResult(i,0); 

Вы можете использовать другие методы для запуска намерения, кроме startActivityForResult, тот ДО вас.

+0

Спасибо! Я не знал, что нужно было использовать <намерение-фильтр> для запуска этой активности, теперь я могу запускать ее без каких-либо проблем, и я даже могу отправить определенные данные. – zapotec

+0

да, вы можете легко передавать значения между ними, используя 'putExtra' с намерениями :) – Urban

1

Вы добавили активность в app1 сек манифеста ?:

<activity 
     android:label="@string/app_name" 
     android:name=".Identificar" > 
    </activity> 
+1

+1 для важного упоминания – Praveenkumar

+1

....... Я думаю, что вы не очень хорошо понимали .... app1 не содержит идентификатора активности. Идентификатор активности находится внутри приложения2. Я хочу запустить эту активность из приложения 1. Спасибо, в любом случае. – zapotec

-3

Я думаю, что, поскольку оба вида деятельности находятся в том же пакете, что у вас есть только сделать:

startActivity(new Intent(getApplicationContext(), Identificar.class)); 
+0

снова прочитал вопрос ... «первый пакет приложений:' es.wul4.android.app1', второй пакет приложений: 'es.wul4.android.app2'" – Selvin

+0

Умм, да, моя вина. –

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