从另一个应用程序android调用应用程序中的活动

时间:2010-12-04 11:37:57

标签: android android-activity

我想从另一个应用程序的活动中调用应用程序的活动。我在这里做的是:

                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平台的新手。

提前完成。

3 个答案:

答案 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;
}

并查看它返回的内容。