2010-12-04 89 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

嘗試像

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"申報活動的活動應用程序。如果該活動未聲明任何意圖過濾器,則該選項的默認值爲false。

8
final Intent intent = new Intent(); 

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

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

這會奏效。它爲我工作!

相關問題