abrir link da google play store na versão móvel android

88

Eu tenho um link de meus outros aplicativos no meu aplicativo mais recente e os abro dessa forma.

Uri uri = Uri.parse("url");
Intent intent = new Intent (Intent.ACTION_VIEW, uri); 
startActivity(intent);

este código abre a versão do navegador da google play store.

Ao tentar abrir do meu telefone, o telefone pergunta se eu quero usar um navegador ou google play e se eu escolher o segundo, ele abre a versão móvel da google play store.

Você pode me dizer como isso pode acontecer de uma vez? Quer dizer, não me pergunte, mas abra diretamente a versão móvel do google play, aquela que vejo ao abrir diretamente do telefone.

motoqueiro Fantasma
fonte
1
Eu gostaria que o penúltimo parágrafo fosse verdadeiro para mim. Usar o link http encontrado aqui: developer.android.com/distribute/googleplay/promote/… não solicita que o usuário escolha o aplicativo ou o navegador. Sempre assume o navegador. Infelizmente, também não posso usar o market://protocolo. Alguém mais está vendo esse comportamento?
SilithCrowe

Respostas:

265

Você vai querer usar o marketprotocolo especificado :

final String appPackageName = "com.example"; // Can also use getPackageName(), as below
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));

Lembre-se de que isso irá travar em qualquer dispositivo que não tenha o Market instalado (o emulador, por exemplo). Portanto, eu sugeriria algo como:

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

Ao usar getPackageName()from Contextou subclasse dele para consistência (obrigado @cprcrack !). Você pode encontrar mais informações sobre as Intenções de Mercado aqui: link .

Eric
fonte
Abrir o seguinte no navegador não abre o Google Play: market: // details? Id = pandora
IgorGanapolsky
1
O ID é o nome do pacote, não o nome do aplicativo. Experimente market://details?id=com.PandoraTV(presumindo que este seja o aplicativo que você deseja).
Eric
9
Esta resposta é sobre como usar o market://prefixo de seu próprio aplicativo, não de um site por meio do navegador. Posso atestar sua funcionalidade (nas versões 2.3, 3.x, 4.0, 4.1 e 4.2) e funciona com o navegador padrão, Chrome Beta 25 e Chrome 18.
Eric
1
Sim, o Chrome é um aplicativo, mas isso exigiria que seus criadores [Google] usassem esse código, não as pessoas [você] que estão fazendo os sites. Da forma como está, este código é para ajudar as pessoas que estão estruturando links especificamente a partir de seus aplicativos.
Eric
2
Você pode usar getPackageName()para recuperar automaticamente o ID do aplicativo.
cprcrack
6

O código abaixo pode ajudá-lo a exibir o link do aplicativo do google play sore na versão móvel.

Para link de aplicativo:

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

Para link do desenvolvedor:

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

            } 
Chirag Ghori
fonte
3

Você pode usar a biblioteca Android Intents para abrir a página do seu aplicativo no Google Play assim:

Intent intent = IntentUtils.openPlayStore(getApplicationContext());
startActivity(intent);
Dmitriy Tarasov
fonte
2
Observe que as respostas somente com link são desencorajadas, as respostas do SO devem ser o ponto final de uma busca por uma solução (em vez de outra parada de referências, que tendem a ficar obsoletas com o tempo). Considere adicionar uma sinopse independente aqui, mantendo o link como uma referência.
Kleopatra de
4
Seria útil incluir um aviso de que esta é sua biblioteca e a função é implementada da mesma forma que a resposta aceita.
ta.speot.is
1

Você pode verificar se o aplicativo Google Play Store está instalado e, se for o caso, você pode usar o protocolo "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);
Paolo Rovelli
fonte
0

Abra a página do aplicativo no Google Play:

Intent intent = new Intent(Intent.ACTION_VIEW,
                Uri.parse("market://details?id=" + context.getPackageName()));
startActivity(intent);

fonte