link aperto di Google Play Store nella versione mobile di Android


88

Ho il collegamento delle mie altre app nella mia ultima app e le apro in questo modo.

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

questo codice apre la versione del browser di Google Play Store.

Quando provo ad aprire dal mio telefono, il telefono mi chiede se voglio usare un browser o Google Play e se scelgo il secondo apre la versione mobile di Google Play Store.

Puoi dirmi come può succedere subito? Intendo non chiedermelo ma apri direttamente la versione mobile di google play, quella che vedo mentre lo apro direttamente dal telefono.


1
Vorrei che il penultimo paragrafo fosse vero per me. L'utilizzo del collegamento http trovato qui: developer.android.com/distribute/googleplay/promote/… non richiede all'utente di scegliere l'app o il browser. Presume sempre il browser. Sfortunatamente, non posso nemmeno usare il market://protocollo. Qualcun altro vede questo comportamento?
SilithCrowe

Risposte:


265

Ti consigliamo di utilizzare il marketprotocollo specificato :

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

Tieni presente che questo si bloccherà su qualsiasi dispositivo su cui non è installato Market (l'emulatore, ad esempio). Quindi, suggerirei qualcosa come:

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

Durante l'utilizzo di getPackageName()from Contexto sottoclasse per coerenza (grazie @cprcrack !). Puoi trovare ulteriori informazioni su Market Intents qui: link .


L'apertura di quanto segue nel browser non apre Google Play: market: // details? Id = pandora
IgorGanapolsky

1
L'ID è il nome del pacchetto, non il nome dell'app. Prova market://details?id=com.PandoraTV(supponendo che questa sia l'app che desideri).
Eric

9
Questa risposta riguarda l'utilizzo del market://prefisso dalla tua app, non da un sito Web tramite il browser. Posso attestare la sua funzionalità (sulle versioni 2.3, 3.x, 4.0, 4.1 e 4.2) e funziona con il browser di serie, Chrome Beta 25 e Chrome 18.
Eric

1
Sì, Chrome è un'app, ma ciò richiederebbe ai suoi creatori [Google] di utilizzare questo codice, non alle persone [tu] che realizzano i siti web. Allo stato attuale, questo codice serve per aiutare le persone che stanno strutturando collegamenti specificamente dalle loro app.
Eric,

2
Puoi utilizzare getPackageName()per recuperare automaticamente l'ID dell'app.
cprcrack

6

Il codice seguente può aiutarti a visualizzare il link dell'applicazione di Google Play Sore nella versione mobile.

Per il collegamento dell'applicazione:

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

Per collegamento sviluppatore:

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

            } 

3

Puoi utilizzare la libreria Android Intents per aprire la pagina dell'applicazione su Google Play in questo modo:

Intent intent = IntentUtils.openPlayStore(getApplicationContext());
startActivity(intent);

2
Nota che le risposte di solo collegamento sono scoraggiate, quindi le risposte dovrebbero essere il punto finale di una ricerca di una soluzione (rispetto a un'altra sosta di riferimenti, che tendono a diventare obsoleti nel tempo). Si prega di considerare l'aggiunta di una sinossi indipendente qui, mantenendo il collegamento come riferimento.
kleopatra

4
Sarebbe utile includere una dichiarazione di non responsabilità che questa è la tua libreria e la funzione è implementata più o meno allo stesso modo della risposta accettata.
ta.speot.is


1

Puoi verificare se è installata l'app Google Play Store e, in tal caso, puoi utilizzare il protocollo "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);

0

Apri la pagina dell'app su Google Play:

Intent intent = new Intent(Intent.ACTION_VIEW,
                Uri.parse("market://details?id=" + context.getPackageName()));
startActivity(intent);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.