2010-12-04 12 views
3

別のアプリケーションのアクティビティからアプリケーションのアクティビティを呼び出したいとします。他のアプリケーションからのアクティビティの呼び出しandroid

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

       startActivity(intent); 

しかし、私のアプリケーションではできない、明示的なアクティビティクラスanother_app_package_name.class_name_in_that_packageを見つけるために、と言ってNoActivityFound例外をスロー終了されます。私はここでやっていることです。

私には明らかなものがありません。誰でも助けてくれますか?

私は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); 

これは動作します。それは私のために働いた!

関連する問題