У меня есть ссылки на другие мои приложения в моем последнем приложении, и я открываю их таким образом.
Uri uri = Uri.parse("url");
Intent intent = new Intent (Intent.ACTION_VIEW, uri);
startActivity(intent);
этот код открывает браузерную версию магазина Google Play.
При попытке открыть с телефона телефон запрашивает, хочу ли я использовать браузер или Google Play, и если я выберу второй, он откроет мобильную версию магазина Google Play.
Подскажите, как это может случиться сразу? Я имею в виду не спрашивать меня, а напрямую открывать мобильную версию Google Play, ту, которую я вижу, когда открываю ее прямо с телефона.
android
google-play
Призрачный гонщик
источник
источник
market://
протокол. Кто-нибудь еще видел такое поведение?Ответы:
Вы захотите использовать указанный
market
протокол:final String appPackageName = "com.example"; // Can also use getPackageName(), as below startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
Имейте в виду, что это приведет к сбою на любом устройстве, на котором не установлен Маркет (например, эмулятор). Следовательно, я бы предложил что-то вроде:
final String appPackageName = getPackageName(); // getPackageName() from Context or Activity object try { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName))); } catch (android.content.ActivityNotFoundException anfe) { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=" + appPackageName))); }
При использовании
getPackageName()
fromContext
или его подкласса для согласованности (спасибо @cprcrack !). Подробнее о рыночных намерениях можно узнать здесь: ссылка .источник
market://details?id=com.PandoraTV
(при условии, что это именно то приложение, которое вам нужно).market://
префикса из вашего собственного приложения, а не с веб-сайта через браузер. Я могу подтвердить его функциональность (в версиях 2.3, 3.x, 4.0, 4.1 и 4.2), и он работает со стандартным браузером, Chrome Beta 25 и Chrome 18.getPackageName()
для автоматического получения идентификатора приложения.Приведенный ниже код может помочь вам отобразить ссылку на приложение Google Play в мобильной версии.
Для ссылки на приложение:
Uri uri = Uri.parse("market://details?id=" + mContext.getPackageName()); Intent myAppLinkToMarket = new Intent(Intent.ACTION_VIEW, uri); try { startActivity(myAppLinkToMarket); } catch (ActivityNotFoundException e) { //the device hasn't installed Google Play Toast.makeText(Setting.this, "You don't have Google Play installed", Toast.LENGTH_LONG).show(); }
Для ссылки разработчика:
Uri uri = Uri.parse("market://search?q=pub:" + YourDeveloperName); Intent myAppLinkToMarket = new Intent(Intent.ACTION_VIEW, uri); try { startActivity(myAppLinkToMarket); } catch (ActivityNotFoundException e) { //the device hasn't installed Google Play Toast.makeText(Settings.this, "You don't have Google Play installed", Toast.LENGTH_LONG).show(); }
источник
Вы можете использовать библиотеку Android Intents для открытия страницы своего приложения в Google Play следующим образом:
источник
Документация на d.android.com: http://developer.android.com/distribute/googleplay/promote/linking.html.
источник
Вы можете проверить, установлено ли приложение Google Play Store , и, если это так, вы можете использовать протокол «market: //» .
final String my_package_name = "........." // <- HERE YOUR PACKAGE NAME!! String url = ""; try { //Check whether Google Play store is installed or not: this.getPackageManager().getPackageInfo("com.android.vending", 0); url = "market://details?id=" + my_package_name; } catch ( final Exception e ) { url = "https://play.google.com/store/apps/details?id=" + my_package_name; } //Open the app page in Google Play store: final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); startActivity(intent);
источник
Открыть страницу приложения в Google Play:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + context.getPackageName())); startActivity(intent);
источник