我想从另一个应用程序的活动中调用应用程序的活动。我在这里做的是:
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平台的新手。
提前完成。
答案 0 :(得分:8)
final Intent intent = new Intent();
ComponentName cName = new ComponentName
("package_name","package_name.class_name");
intent.setComponent(cName);
startActivity(intent);
这会奏效。它对我有用!
答案 1 :(得分:1)
这样的事情会起作用:
final Intent intent = new Intent();
intent.setComponent(new ComponentName("<package_name>", "<activity_class_name"));
context.startActivity(intent);
但拥有您要启动的活动的应用程序必须在其清单中声明活动"exported"。如果活动未声明任何意图过滤器,则该选项的默认值为false。
答案 2 :(得分: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” - 必须完全合格。
如果这不起作用,请尝试使用intent的类名字符串调用以下方法:
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;
}
并查看它返回的内容。