[从Google Play商店安装应用时的onActivityResult回调

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[从Google Play商店安装应用时的onActivityResult回调相关的知识,希望对你有一定的参考价值。

我想简短的问题是:在从Google Play商店安装/未安装应用后,是否可以通过onActivityResult获得有效的回调?

我可以通过以下方式将用户发送到应用(假设他们拥有Google Play商店并使用URL中的程序包名称):

Intent marketIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName));
marketIntent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
startActivityForResult(marketIntent, 1);

我想在这里得到结果:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 1) {
        if (resultCode == RESULT_OK) {
            Log.d("TAG", "onActivityResult: user accepted the install");
        } else if (resultCode == RESULT_CANCELED) {
            Log.d("TAG", "onActivityResult: user cancelled the install");
        } else if (resultCode == RESULT_FIRST_USER) {
            Log.d("TAG", "onActivityResult: failed to install");
        }
    }
}

我希望使用Intent.ACTION_INSTALL_PACKAGE而不是Intent.ACTION_VIEW进行安装,但是有关如何使用前者的信息是有限的。但是,Intent.ACTION_INSTALL_PACKAGE似乎已从API级别29弃用,因此我也接受使用PackageInstaller的解决方案。

顺便说一下,我发布的代码有缺陷,因为返回到应用程序时,它总是返回resultCode == RESULT_CANCELED

答案

一种可能的解决方案是,您必须在将用户重定向到Playstore之前,以编程方式检查以下特定包名称,然后确定是否已安装该应用程序。然后在OnActivityResult回调中再次使用以下方法进行检查。

private boolean isAppInstalled(String packageName) {
    PackageManager pm = getPackageManager();
        try {
            pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
            return pm.getApplicationInfo(packageName, 0).enabled;
        }
        catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
            return false;
        }
    }
另一答案

简单的答案是-否,不可能

如果您重定向的用户安装了应用程序,则无法获得回调

我在这里不知道您的确切用例,但是如果涉及涉及推荐的工作,那么我建议您看一下here。 Google Play安装引荐来源网址可以提供信息

以上是关于[从Google Play商店安装应用时的onActivityResult回调的主要内容,如果未能解决你的问题,请参考以下文章

google play商店怎么使用

Google PlayGoogle Play 服务框架安装 ( 安装 Google Play 服务框架 | 安装 Google Play 服务 | 安装 Google Play 商店 )

安装Google play?

Google Play商店为预注册的游戏和应用提供自动安装功能

从 Google Play 商店升级应用,显示为“打开”

gsutil - 如何从 google play 获取 Android 应用审查报告