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

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

我已经尝试了一些例子 ,但他们不为我工作,我得到一个包parsing错误。

考虑有两个应用程序: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";

我认为这个代码将有助于:

 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"); } 

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

假设安装了app1和app2,请查看app2的AndroidManifest.xml文件。 这个文件将指出它将会响应什么样的Intent

看到一个很好的例子http://developer.android.com/guide/topics/intents/intents-filters.html#npex

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

 Intent i4=new Intent(Intent.ACTION_MAIN); PackageManager manager = getPackageManager(); i4 = manager.getLaunchIntentForPackage("com.apk");//apk name i4.addCategory(Intent.CATEGORY_LAUNCHER); startActivity(i4);