【问题标题】:How to Invoke or call one app from another app in Android?如何从 Android 中的另一个应用程序调用或调用一个应用程序?
【发布时间】:2011-04-04 13:05:43
【问题描述】:
我想从另一个应用程序调用一个应用程序。
我的 Java 文件代码:
Intent intent = new Intent(Intent.ACTION_RUN);
intent.setComponent(new ComponentName("Package name", "class name"));
startActivity(intent);
但是我在指定确切的包路径时遇到了问题,并且我不知道 Manifest 中该代码的权限。请帮帮我。
【问题讨论】:
标签:
java
android-intent
android-manifest
package-name
【解决方案1】:
我将假设您的真正意思是要启动另一个应用程序,而不是应用程序中的另一个 Activity。
那么有两种方法可以做到这一点。您可以尝试使用根据文档的隐式意图,(隐式)意图是“要执行的操作的抽象描述”,“提供在不同应用程序中的代码之间执行后期运行时绑定”。有点像尝试使用接口通过网络启动方法。您无法确定启动的对象的确切类是什么,只有它可以处理您声明的操作和类别。
第二种方法是显式意图,这更像是通过网络进行具体调用。如果您知道包和类名,这应该可以工作。
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);
}
}
您可以根据需要和尝试从哪里启动,使用标志添加额外信息。
日航
【解决方案2】:
从您的应用启动外部活动是使用与您正在使用的方法略有不同的方法完成的。你需要create an intent with a given action。例如,启动从图库中获取图像的意图如下所示:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, IMAGE_PICK);
请注意,您没有明确定义要加载的活动,而是要执行的操作类型。然后,Android 将选择(或让用户选择)一个已注册来处理要运行的 Intent 的 Activity。
【解决方案3】:
您可能需要更具体地了解自己在做什么。如果你只想从你的主 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 像这样放在清单中:
<activity android:name=".OtherActivity"
android:label="@string/other"/>
如果你的目标是别的,那么你应该明确你想做的事情。