如何从另一个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);