【问题标题】:Open third party app打开第三方应用
【发布时间】:2015-08-27 19:47:40
【问题描述】:

我正在开发一个使用包名来启动第三方应用程序的应用程序。我做了一些研究,发现所有应用程序都可以从启动器意图启动。有没有人知道如何通过单击按钮来做到这一点。

【问题讨论】:

标签: android android-intent


【解决方案1】:

您不能真正“启动应用程序”。如果您知道包名,您可以尝试从 3rd 方应用程序获取 Launch Intent:

Intent intent = getPackageManager().getLaunchIntentForPackage("com.thirdparty.package");
startActivity( intent );

【讨论】:

  • 应将标志设置为“setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED)”以重新打开已打开的应用程序。
【解决方案2】:

对于上述接受的答案,如果您的模拟器上没有安装第三方应用程序,您也应该优雅地处理它。 这是相同的完整代码:

public void openThirdPartyApp() {   

        Intent intent = new Intent("com.thirdparty.package");
            intent.setPackage("com.thirdparty.package");

            try {
                ((Activity) context).startActivityForResult(intent, REQUEST_CODE);
            } catch (ActivityNotFoundException e) {
                downloadIt();
            }
        }

    private void downloadIt() {

    Uri uri = Uri.parse("market://search?q=pname:" + "com.thirdparty.package");
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);

                try {
                    context.startActivity(intent);
                } catch (ActivityNotFoundException e) {
    //creates a small window to notify there is no app available 
                }   

            }
        }

    }

【讨论】:

  • 很好的回答,但这不适用于我正在做的事情。我正在使用获取包名称然后启动它的包管理器。但这可能在以后的项目中有用。谢谢你的回答!
  • 这不行... Intent 初始化代码: Intent intent = new Intent("com.thirdparty.package");应该有像“android.intent.action.MAIN”这样的动作吗?
  • @syonip,你为什么要使用“android.intent.action.MAIN”??
  • 根据文档,带有字符串参数的 Intent 构造函数需要接收和操作,而不是包名。 developer.android.com/reference/android/content/Intent.html
【解决方案3】:

只要把它放在一个 View.OnClickListener 中:

myButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = getPackageManager().getLaunchIntentForPackage(theOtherActivityPackage);
        startActivity( intent );
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    相关资源
    最近更新 更多