mobil sürüm android'de google oyun mağazasının bağlantısını aç


88

Son uygulamamda diğer uygulamalarımın bağlantıları var ve onları bu şekilde açıyorum.

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

bu kodlar, google oyun mağazasının tarayıcı sürümünü açar.

Telefonumdan açmaya çalışırken, telefon bir tarayıcı veya google play kullanmak isteyip istemediğimi soruyor ve ikincisini seçersem google play store'un mobil sürümünü açıyor.

Bunun bir anda nasıl olabileceğini bana söyleyebilir misin? Bana sormak istemiyorum ama doğrudan telefondan açarken gördüğüm google play'in mobil versiyonunu açıyorum.


1
İkinci ve son paragrafın benim için doğru olmasını dilerdim. Burada bulunan http bağlantısını kullanmak: developer.android.com/distribute/googleplay/promote/… , kullanıcıdan uygulamayı veya tarayıcıyı seçmesini istemez. Her zaman tarayıcıyı varsayar. Maalesef market://protokolü de kullanamıyorum . Bu davranışı gören başka kimse var mı?
SilithCrowe

Yanıtlar:


265

Belirtilen marketprotokolü kullanmak isteyeceksiniz :

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

Unutmayın, bu, Market'in kurulu olmadığı herhangi bir cihazda (örneğin emülatör) çökecektir. Bu nedenle, şöyle bir şey öneririm:

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

Tutarlılık için getPackageName()from Contextveya alt sınıfını kullanırken (teşekkürler @cprcrack !). Pazar Amaçları hakkında daha fazla bilgiyi burada bulabilirsiniz: bağlantı .


Aşağıdakileri tarayıcıda açmak Google Play'i açmıyor: market: // details? İd = pandora
IgorGanapolsky

1
Kimlik, uygulama adı değil, paket adıdır. Deneyin market://details?id=com.PandoraTV( istediğiniz uygulamanın bu olduğunu varsayarak ).
Eric

9
Bu yanıt, market://tarayıcı aracılığıyla bir web sitesinden değil, kendi uygulamanızdaki öneki kullanmakla ilgilidir . İşlevselliğini kanıtlayabilirim (2.3, 3.x, 4.0, 4.1 ve 4.2 sürümlerinde) ve stok tarayıcı, Chrome Beta 25 ve Chrome 18 ile çalışır.
Eric

1
Evet, Chrome bir uygulamadır, ancak bu, web sitelerini oluşturan [siz] kişilerin değil, üreticilerinin [Google] bu kodu kullanmasını gerektirir. Mevcut haliyle, bu kod, özellikle uygulamalarından bağlantılar oluşturan kişilere yardımcı olmak içindir.
Eric

2
getPackageName()Uygulama kimliğini otomatik olarak almak için kullanabilirsiniz .
cprcrack

6

Aşağıdaki kod, google play sore'un mobil versiyondaki uygulama bağlantısını görüntülemenize yardımcı olabilir.

Uygulama bağlantısı için:

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

Geliştirici bağlantısı için:

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

Uygulama sayfanızı Google Play'de şu şekilde açmak için Android Amaçlar kitaplığını kullanabilirsiniz :

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

2
Not o bağlantı sadece cevaplar tavsiye edilmez, SO cevaplar çözüm (vs. henüz zamanla bayat almak eğilimindedir referanslar, başka mola) için bir aramanın son nokta olmalıdır. Lütfen bağlantıyı referans alarak buraya bağımsız bir özet eklemeyi düşünün.
kleopatra

4
Bunun sizin kitaplığınız olduğuna ve işlevin kabul edilen yanıtla hemen hemen aynı şekilde uygulandığına dair bir sorumluluk reddi beyanı eklemek yararlı olacaktır .
ta.speot.is


1

Google Play Store uygulamasının yüklü olup olmadığını kontrol edebilir ve bu durumda "market: //" protokolünü kullanabilirsiniz.

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

Google Play'de uygulama sayfasını açın:

Intent intent = new Intent(Intent.ACTION_VIEW,
                Uri.parse("market://details?id=" + context.getPackageName()));
startActivity(intent);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.