Android: ответ от рыночной активности - PullRequest
5 голосов
/ 01 октября 2010

Я пытаюсь создать приложение, которое открывает страницу Android-маркета для выбранного приложения и позволяет пользователю загрузить его. Я использовал ниже намерение открыть рынок.

  Intent intent = new Intent (Intent.ACTION_VIEW);
    intent.setData (Uri.parse ("market://details?id=" + PackageName ));
    intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivityForResult (intent, 13);

но я всегда получаю код результата 0 в onActivityResult.StackTrace говорит:

I/ActivityManager(   79): Starting activity: Intent { act=android.intent.action.VIEW dat=market://details?id=com.google.android.apps.unveil flg=0x10000000 cmp=com.an
droid.vending/.AssetInfoActivity }
W/ActivityManager(   79): Activity is launching as a new task, so cancelling activity result.

Я хочу, чтобы маркет вернул мне ответ, что пользователь скачал приложение или просто отменил.

РЕДАКТИРОВАТЬ: @CommonsWare Я пытаюсь получить доступ к добавленному пакету здесь, но не могу понять, что должно быть ключом, чтобы получить имя пакета из дополнений ACTION_PACKAGE_ADDED

public class ServiceReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
    //Do this when the system sends the intent
    Bundle b = intent.getExtras();
    String packagename = b.get(?);   //cant figure what should be key to get packagename //from extras
    }

}

Ответы [ 2 ]

6 голосов
/ 01 октября 2010

Android Market не настроен на поддержку startActivityForResult(). Также имейте в виду, что загрузка и установка происходят асинхронно (то есть пользователь нажимает кнопку «Установить», и загрузка происходит в фоновом режиме, и они завершают установку с помощью Notification).

3 голосов
/ 06 октября 2010

@ CommonsWare Superb!

Ваше решение оказалось полезным, и оно также привело меня к другой очень полезной странице http://devdaily.com/java/jwarehouse/android/core/java/com/android/internal/content/PackageMonitor.java.shtml

Ниже приведен фрагмент кода из источника ссылки выше для получения имени пакета.в настоящее время установлено приложение с целью трансляции:

 String getPackageName(Intent intent) {
        Uri uri = intent.getData();
        String pkg = uri != null ? uri.getSchemeSpecificPart() : null;
        return pkg;
    }

Спасибо Commonsware.

...