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

时间:2010-04-28 10:06:45

标签: android

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

我尝试了一些examples,但它们不适用于我,我收到了一个包解析错误。

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

4 个答案:

答案 0 :(得分: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");
}

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分: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);

答案 3 :(得分: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
        }
    }