我想从另一个应用程序调用一个应用程序。
我的Java文件代码:
Intent intent = new Intent(Intent.ACTION_RUN);
intent.setComponent(new ComponentName("Package name", "class name"));
startActivity(intent);
但是我在指定确切的包路径方面遇到了问题,而且我不知道Manifest中该代码的权限。请帮帮我吧。
答案 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"/>
如果你的目标是其他目标,那么你应该根据自己的目标做出具体的决定。