如何从一个Android应用程序调用另一个Android应用程序

7

我希望能够从一个应用程序调用另一个安卓应用程序。

我尝试了一些示例,但它们对我没有起作用,我得到了一个包解析错误。

假设有两个应用程序:Application1和Application2。

我想从Application1调用Application2。

这里是一些示例代码:

Intent i = new Intent();
i.setAction(android.content.Intent.ACTION_VIEW);
i.setDataAndType(Uri.fromFile(fileName),"application/vnd.android.package-archive"); 
startActivity(i);

这里的fileName = "file://data/data/package_name/files/Application1.apk";指文件路径。

2
在Android中有许多概念类似于“从一个应用程序调用另一个应用程序”。请考虑在您的问题中再添加大约一百个单词,解释您想要实现什么,这样我们可以更好地帮助您。 - CommonsWare
可能是在Android上从另一个应用程序启动应用程序的重复问题。 - galacticninja
4个回答

6

我认为这段代码会对你有所帮助:

Intent intent = new Intent(Intent.ACTION_RUN);
intent.setComponent(new ComponentName("<packet name>", "<class name>"));
List list = packageManager.queryIntentActivities(intent, packageManager.COMPONENT_ENABLED_STATE_DEFAULT);

if(list.size() > 0)
{
 Log.i("Log", "Have application" + list.size());
 startActivity(intent);
}
else
{
    Log.i("Log", "None application");
}

1

您是否试图启动一个未安装的应用程序?看起来您正在尝试通过将app1传递到存储卡上的app2的.apk文件的位置来执行应用程序-这是行不通的。只有在用户安装了它后,Android操作系统才会知道如何通过Intent调用app2(考虑到如果您可以调用坐落在SD卡上的任意代码,存在的安全风险)。

假设已经安装了app1和app2,请查看app2的AndroidManifest.xml文件。此文件将显示它将响应什么类型的Intents。

有关良好示例,请参见http://developer.android.com/guide/topics/intents/intents-filters.html#npex

如果需要更多帮助,请向我们展示app2的AndroidManifest.xml文件。


0
Intent i4=new Intent(Intent.ACTION_MAIN);

PackageManager manager = getPackageManager();

i4 = manager.getLaunchIntentForPackage("com.apk");//apk name

i4.addCategory(Intent.CATEGORY_LAUNCHER);

startActivity(i4);

0
private void handleCallGooglePlay(Activity mActivity, String packageClass) {
        try {
            mActivity.startActivity(new Intent("android.intent.action.VIEW", Uri.parse("market://details?id=" + packageClass)));
        } catch (Exception var4) {
            mActivity.startActivity(new Intent("android.intent.action.VIEW", Uri.parse(package_name)));  //package name
        }
    }

1
感谢您的贡献 @Tan Lee。您是否可以添加更详细的文本并修复格式? - erncyp
我使用它来制作我的在线支付应用程序...它使用链接打开我手机上可用的应用程序。 - Tan Lee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接