otwórz link do sklepu Google Play w wersji mobilnej android

88

Mam link do moich innych aplikacji w mojej najnowszej aplikacji i otwieram je w ten sposób.

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

ten kod otwiera wersję przeglądarki sklepu Google Play.

Podczas próby otwarcia z mojego telefonu telefon pyta, czy chcę użyć przeglądarki lub Google Play, a jeśli wybiorę drugą, otwiera mobilną wersję sklepu Google Play.

Czy możesz mi powiedzieć, jak to się może stać od razu? Nie pytaj mnie, ale bezpośrednio otwórz mobilną wersję Google Play, tę, którą widzę, otwierając ją bezpośrednio z telefonu.

Ghostrider
źródło
1
Żałuję, że przedostatni akapit nie był dla mnie prawdziwy. Korzystanie z linku http znajdującego się tutaj: developer.android.com/distribute/googleplay/promote/ ... nie monituje użytkownika o wybranie aplikacji lub przeglądarki. Zawsze zakłada przeglądarkę. Niestety nie mogę też używać market://protokołu. Czy ktoś jeszcze widział takie zachowanie?
SilithCrowe

Odpowiedzi:

265

Będziesz chciał użyć określonego marketprotokołu:

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

Pamiętaj, że spowoduje to awarię na każdym urządzeniu, na którym nie jest zainstalowany Market (na przykład emulator). Stąd proponuję coś takiego:

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

Podczas używania getPackageName()from Contextlub jego podklasy dla spójności (dzięki @cprcrack !). Więcej informacji na temat zamiarów rynkowych można znaleźć tutaj: link .

Eric
źródło
Otwarcie tego w przeglądarce nie otwiera Google Play: market: // details? Id = pandora
IgorGanapolsky
1
Identyfikator to nazwa pakietu, a nie nazwa aplikacji. Spróbuj market://details?id=com.PandoraTV(zakładając, że jest to aplikacja, której chcesz).
Eric
9
Ta odpowiedź dotyczy używania market://prefiksu z własnej aplikacji, a nie ze strony internetowej za pośrednictwem przeglądarki. Mogę potwierdzić jego funkcjonalność (w wersjach 2.3, 3.x, 4.0, 4.1 i 4.2) i działa z podstawową przeglądarką, Chrome Beta 25 i Chrome 18.
Eric
1
Tak, Chrome to aplikacja, ale wymagałoby to od jej twórców [Google] używania tego kodu, a nie od osób [Ciebie] tworzących strony internetowe. W obecnej postaci kod ten ma pomóc osobom, które tworzą strukturę linków specjalnie z poziomu swoich aplikacji.
Eric
2
Możesz użyć, getPackageName()aby automatycznie pobrać identyfikator aplikacji.
cprcrack
6

Poniższy kod może pomóc w wyświetleniu linku do aplikacji Google Play w wersji mobilnej.

Link do aplikacji:

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

Dla łącza programisty:

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
źródło
3

Możesz użyć biblioteki Android Intents do otwierania strony aplikacji w Google Play w następujący sposób:

Intent intent = IntentUtils.openPlayStore(getApplicationContext());
startActivity(intent);
Dmitriy Tarasov
źródło
2
Należy pamiętać, że odradza się udzielanie odpowiedzi zawierających tylko łącze , odpowiedzi SO powinny być końcowym punktem poszukiwania rozwiązania (w porównaniu z kolejną przerwą w dostępie do odniesień, które z czasem stają się nieaktualne). Rozważ dodanie tutaj samodzielnego streszczenia, zachowując link jako odniesienie.
kleopatra
4
Przydałoby się zastrzeżenie, że to jest twoja biblioteka, a funkcja jest zaimplementowana w taki sam sposób, jak zaakceptowana odpowiedź.
ta.speot.is
1

Możesz sprawdzić, czy aplikacja Sklep Google Play jest zainstalowana, a jeśli tak jest, możesz użyć protokołu „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
źródło
0

Otwórz stronę aplikacji w Google Play:

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

źródło