Android: Ответ с рыночной деятельности
-
27-09-2019 - |
Вопрос
Я пытаюсь сделать приложение, которое открывает страницу 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;
}
Спасибо всем.