Вопрос

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

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

Но я всегда получаю RESVENTCODE 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 Я пытаюсь получить доступ к добавленному пакету здесь, но не могу понять, что должно быть ключом, чтобы получить PackageName из дополнительных доходов 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
    }

}
Это было полезно?

Решение

Рынок Android не устанавливается для поддержки startActivityForResult(). Отказ Кроме того, имейте в виду, что загрузка и установка происходит асинхронно (то есть пользовательские клики установки, а загрузка происходит на заднем плане, и они завершают установку через Notification).

Другие советы

@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;
    }

Спасибо всем.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top