如何从Android中的其他应用调用或调用一个应用?

时间:2011-04-04 13:05:44

标签: java android-intent android-manifest package-name

我想从另一个应用程序调用一个应用程序。

我的Java文件代码:

Intent intent = new Intent(Intent.ACTION_RUN);
intent.setComponent(new ComponentName("Package name", "class name"));
startActivity(intent);

但是我在指定确切的包路径方面遇到了问题,而且我不知道Manifest中该代码的权限。请帮帮我吧。

3 个答案:

答案 0 :(得分:4)

我将假设你真的想要启动另一个应用程序,而不是你的应用程序中的另一个活动。

然后有两种方法可以做到这一点。您可以尝试使用隐式意图,根据文档,(隐式)意图是“要执行的操作的抽象描述”,“提供在不同应用程序中的代码之间执行后期运行时绑定”。有点像尝试使用接口在线路上启动方法。您无法确切地确定启动的对象的类是什么,它只能处理您声明的操作和类别。

第二种方法是明确的意图,更像是通过网络进行具体的调用。如果你知道包和类名这应该有效。

    Intent intent = new Intent(Intent.ACTION_MAIN);
    //intent.putExtra("plain_text", "Testing");
    intent.setClassName("packagename", "packagename.ClassName"); // Explicit Intent
    try {
        startActivity(intent);
    }
    catch (Exception e)
    {
        Log.d(TAG","onCreate",e);
    }
}

您可以根据需要和尝试启动的位置使用标记添加额外信息。

JAL

答案 1 :(得分:3)

使用与您正在使用的方法稍有不同的方法,从您的应用中启动外部活动。你需要create an intent with a given action。例如,启动从图库中获取图像的意图如下所示:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, IMAGE_PICK);

请注意,您没有明确定义要加载的活动,而是要执行的操作类型。然后,Android将选择(或让用户选择)已注册处理此类意图的活动。

答案 2 :(得分:2)

您可能需要更具体地了解自己在做什么。如果您想要做的就是从主Activity中启动另一个Activity,那么这样就可以了:

Intent intent = new Intent(this, OtherActivity.class);
intent.putExtra("key", "data"); //put any data you want to pass into the new activity
startActivity(intent);

然后确保将新活动放在清单中,如下所示:

<activity android:name=".OtherActivity"
      android:label="@string/other"/>

如果你的目标是其他目标,那么你应该根据自己的目标做出具体的决定。