【问题标题】:How to call one android application from another android application如何从另一个 android 应用程序调用一个 android 应用程序
【发布时间】:2010-04-28 10:06:44
【问题描述】:

我想从另一个应用程序调用一个 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";

【问题讨论】:

标签: android


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    请参阅http://developer.android.com/guide/topics/intents/intents-filters.html#npex 了解一个很好的例子。

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

    【讨论】:

      【解决方案3】:
      Intent i4=new Intent(Intent.ACTION_MAIN);
      
      PackageManager manager = getPackageManager();
      
      i4 = manager.getLaunchIntentForPackage("com.apk");//apk name
      
      i4.addCategory(Intent.CATEGORY_LAUNCHER);
      
      startActivity(i4);
      

      【讨论】:

        【解决方案4】:
        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
                }
            }
        

        【讨论】:

        • 感谢@Tan Lee 的贡献。您能否添加更多描述性文本并修复格式?
        • 我用它来制作我的在线支付应用程序...它使用我手机上可用的链接打开应用程序
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多