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

Aks*_*ata 7 android

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

我已经尝试了一些示例,但它们不适合我,我收到了一个包解析错误.

考虑有两个应用程序: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);
Run Code Online (Sandbox Code Playgroud)

这里 fileName = "file://data/data/package_name/files/Application1.apk";

小智 5

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

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");
}
Run Code Online (Sandbox Code Playgroud)


Kei*_*ith 1

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

假设安装了 app1 和 app2,请查看 app2 的 AndroidManifest.xml 文件。该文件将指示Intent它将响应哪种类型。

请参阅http://developer.android.com/guide/topics/intents/intents-filters.html#npex以获得一个很好的示例。

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