2010-12-04 100 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); 

这会奏效。它为我工作!

相关问题