2014-11-20 7 views
9

Я хочу открыть магазин Google Play прямо из своего приложения.Как открыть приложение Google Play Store напрямую без намерений выбора

Вот что я делаю сейчас.

try { 
    // Check whether Google Play store is installed or not: 
    this.getPackageManager().getPackageInfo(
          "com.android.vending", 0); 

    url = "market://details?id=" + packageName; 
} catch (final Exception e) { 
    url = "https://play.google.com/store/apps/details?id=" 
          + packageName; 
} 

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

, но проблема в том, что он показывает другие приложения в поле выбора приложений.

Я не хочу этого, как я могу избежать коробки Chooser и непосредственно открыть магазин игр?

Обновлен:

Fixed этой проблемы с помощью этого:

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_VIEW); 
intent.setData(Uri.parse("market://search?q=foo")); 
PackageManager pm = getActivity().getPackageManager(); 
List<ResolveInfo> list = pm.queryIntentActivities(intent, 0); 
for (int a = 0; a < list.size(); a++) { 
    ResolveInfo info = list.get(a); 

    ActivityInfo activity = info.activityInfo; 
    if (activity.name.contains("com.google.android")) { 
    ComponentName name = new ComponentName(
           activity.applicationInfo.packageName, 
           activity.name); 
    Intent i = new Intent(Intent.ACTION_MAIN, 
           Uri.parse("http://play.google.com/store/apps/details?id=" 
             + packageName)); 

    i.addCategory(Intent.CATEGORY_LAUNCHER); 
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK 
       | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); 
    i.setComponent(name); 
    startActivity(i); 
    getActivity().finish(); 
    } 
} 
} 

но теперь проблема заключается в том, что она открывает главную страницу Play магазина, но я хочу, чтобы перенаправить определенное приложение, чья название упаковки отправляю. Кто-нибудь может мне с этим помочь.

Помощь всегда приветствуется.

+0

которые дополнительные приложения он показывает? –

+0

проверить эту ссылку, im довольно уверен, что вы можете установить свое намерение именно так, но для Action_View, я не уверен, хотя никогда не пробовал http://stackoverflow.com/questions/26625505/restricting-share-options/26625813#26625813 – JRowan

+0

пройти имя пакета магазина google (найдите где-нибудь, как я не знаю) в намерении, и он запустит магазин google – therealprashant

ответ

24

использовать этот код ... он работает для меня

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("https://play.google.com/store/apps/details?id=" + appPackageName))); 
    } 
+2

Что делать, если пакет недоступен? Он просто отобразит пустую страницу ошибок ... –

+0

Простой и простой пример, Cheers mate :) – Zohair

+2

изменить URL-адрес на 'https: //' –

3

Если я правильно получил, вы ищете это.

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("https://play.google.com/store/apps/details?id=" + appPackageName))); 
} 

Попробуйте

+0

изменить URL-адрес на 'https: //' –

Смежные вопросы