从另一个应用程序的应用程序中调用应用程序的活动android
问题描述:
我想从另一个应用程序的活动中调用应用程序的活动。我在这里做的是:从另一个应用程序的应用程序中调用应用程序的活动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提前。
答
尝试像
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;
}
,看看它返回。
答
像这样将工作:
final Intent intent = new Intent();
intent.setComponent(new ComponentName("<package_name>", "<activity_class_name"));
context.startActivity(intent);
但拥有你想开始必须在其清单"exported"申报活动的活动应用程序。如果该活动未声明任何意图过滤器,则该选项的默认值为false。
答
final Intent intent = new Intent();
ComponentName cName = new ComponentName
("package_name","package_name.class_name");
intent.setComponent(cName);
startActivity(intent);
这会奏效。它为我工作!