2010-12-04 5 views
3

Я хочу вызвать активность приложения из-за действия другого приложения. Что я делаю здесь:Вызов активности из приложения из другого приложения android

   Intent intent = new Intent(); 
       intent.setClassName("another_app_package_name", "another_app_package_name.class_name_in_that_package"); 

       startActivity(intent); 

Но мое приложению бросить бросать NoActivityFound исключения, говоря, что не удалось найти явную активность класса another_app_package_name.class_name_in_that_package.

Мне не хватает чего-то очевидного. Кто-нибудь может помочь?

Я совершенно не знаком с платформой Android.

Thanx заранее.

ответ

0

Try что-то вроде

final Intent i = new Intent(); 
i.setAction(Intent.ACTION_MAIN); //might not be necessary 
i.setClassName("com.htc.android.worldclock", "com.htc.android.worldclock.WorldClockTabControl"); 
startActivity(i); 

Имя класса - например, «com.htc.android.worldclock.WorldClockTabControl» - должен быть полностью квалифицирован.

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

public static boolean isIntentAvailable(final Context context, 
     final String action) { 
    final PackageManager packageManager = context.getPackageManager(); 
    final Intent intent = new Intent(action); 
    final List<ResolveInfo> list = packageManager.queryIntentActivities(
      intent, PackageManager.MATCH_DEFAULT_ONLY); 
    return list.size() > 0; 
} 

и посмотреть, что он возвращается.

1

Что-то, как это будет работать:

final Intent intent = new Intent(); 
intent.setComponent(new ComponentName("<package_name>", "<activity_class_name")); 
context.startActivity(intent); 

Но приложение, которое обладает активностью вы хотите начать должны объявить свою деятельность с "exported" в своем манифесте. Значение по умолчанию для этого параметра ложно, если активность не объявляет какие-либо фильтры намерений.

8
final Intent intent = new Intent(); 

ComponentName cName = new ComponentName 
("package_name","package_name.class_name"); 

intent.setComponent(cName);   
startActivity(intent); 

Это будет работать. Это сработало для меня!

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