2010-04-28 108 views
7

我想从另一个应用程序如何从其他Android应用程序

我已经尝试了一些examples调用一个Android应用程序调用一个Android应用程序,但他们不是为我工作,我得到一个包解析错误。

考虑有两个应用:应用1和应用2

我想从应用程序1

这里调用应用2是一些示例代码来做到这一点:

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的许多概念,类似于“从另一个调用一个Android应用程序”。请考虑在你的问题中再添加大约100个词,解释你正在努力完成的是什么,以便我们能够更好地帮助你。 – CommonsWare 2010-04-28 11:55:37

+0

[在Android上从另一个应用程序启动应用程序]的可能重复(http://stackoverflow.com/questions/3872063/launch-an-application-from-another-application-on-android) – galacticninja 2016-02-27 17:50:01

回答

1

您是否尝试启动未安装的应用程序?它看起来像你试图执行一个应用程序通过传递app1的.apk文件的位置在appd上的SD卡 - 这是行不通的。只有在用户安装完毕后,Android OS才会知道如何通过Intent来调用app2(考虑到安全风险,只要调用位于SD卡上的任意代码即可)。

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

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

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

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"); 
} 
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); 
相关问题