Обратный вызов onActivityResult при установке приложения из Google Play Store - PullRequest
0 голосов
/ 05 февраля 2020

Думаю, короткий вопрос: возможно ли получить рабочий обратный вызов с помощью onActivityResult после установки / не установки приложения из Google Play Store?

Я могу отправить пользователя в приложение (при условии, что у него есть Google Play Store и используя имя пакета в 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 при возврате в приложение.

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

Одним из возможных решений является необходимость программной проверки с помощью указанного ниже метода для конкретного имени пакета, прежде чем перенаправлять пользователя в 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;
        }
    }
0 голосов
/ 05 февраля 2020

Простой ответ: - НЕТ, это невозможно

Вы не можете получить обратный вызов, если пользователь, которого вы перенаправили, установил приложение

Я не знаю вашего точного используйте здесь, но если это связано с работой, связанной с рефералом, то я предлагаю вам посмотреть здесь . Google Play Install Referrer может предоставить информацию

...