Google Play Store'u doğrudan Android uygulamamdan nasıl açabilirim?


569

Google Play mağazasını aşağıdaki kodu kullanarak açtım

Intent i = new Intent(android.content.Intent.ACTION_VIEW);
i.setData(Uri.parse("https://play.google.com/store/apps/details?id=my packagename "));
startActivity(i);.

Ancak seçeneği (tarayıcı / oyun mağazası) seçmem için bana Tam bir Eylem Görünümü gösterir. Uygulamayı doğrudan Play Store'da açmam gerekiyor.


Yanıtlar:


1436

Bunu market://öneki kullanarak yapabilirsiniz .

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

Burada bir try/catchblok kullanıyoruz, çünkü ExceptionPlay Store hedef cihaza yüklenmezse bir atılacak.

NOT : market://details?id=<appId>Özellikle Google Play'i hedeflemek istiyorsanız herhangi bir uygulama Uri'yi işleyebilecek şekilde kaydolabilir . Ber theák yanıtını kontrol edin


53
tüm Geliştirici uygulamalarına yönlendirmek istiyorsanız market://search?q=pub:"+devNamevehttp://play.google.com/store/search?q=pub:"+devName
Stefano Munarini

4
Bazı uygulama "market: //" şeması tanımlı niyet filtresi kullanıyorsa, bu çözüm çalışmaz. Cevabımı Google Play'i ve SADECE Google Play uygulamasını (veya GP yoksa web tarayıcısını) nasıl açacağımı görün. :-)
Berťák

18
Gradle derleme sistemini kullanan projeler için appPackageNameaslında BuildConfig.APPLICATION_ID. Hayır Context/ Activitybellek sızıntı riskini azaltır bağımlılıkları.
Christian García

3
Hedefi başlatmak için hala bağlama ihtiyacınız var. Context.startActivity ()
wblaschko

2
Bu çözüm, bir web tarayıcısı açma niyeti olduğunu varsayar. Bu her zaman doğru değildir (Android TV'de olduğu gibi) dikkatli olun. Ne yapacağınızı belirlemek için intent.resolveActivity (getPackageManager ()) öğesini kullanmak isteyebilirsiniz.
Coda

161

Buradaki birçok cevap Uri.parse("market://details?id=" + appPackageName)) Google Play'i açmak için kullanılmasını önermektedir , ancak aslında yetersiz olduğunu düşünüyorum :

Bazı üçüncü taraf uygulamaları, "market://"tanımlanmış şema ile kendi niyet filtrelerini kullanabilir , böylece Google Play yerine sağlanan Uri'yi işleyebilirler (bu durumu egSnapPea uygulamasıyla yaşadım). Soru, "Google Play Store nasıl açılır?" Sorusudur, bu yüzden başka bir uygulama açmak istemediğinizi varsayalım. Ayrıca, örneğin uygulama derecelendirmesinin yalnızca GP Store uygulamasında vb.

Google Play'i ve SADECE Google Play'i açmak için bu yöntemi kullanıyorum:

public static void openAppRating(Context context) {
    // you can also use BuildConfig.APPLICATION_ID
    String appId = context.getPackageName();
    Intent rateIntent = new Intent(Intent.ACTION_VIEW,
        Uri.parse("market://details?id=" + appId));
    boolean marketFound = false;

    // find all applications able to handle our rateIntent
    final List<ResolveInfo> otherApps = context.getPackageManager()
        .queryIntentActivities(rateIntent, 0);
    for (ResolveInfo otherApp: otherApps) {
        // look for Google Play application
        if (otherApp.activityInfo.applicationInfo.packageName
                .equals("com.android.vending")) {

            ActivityInfo otherAppActivity = otherApp.activityInfo;
            ComponentName componentName = new ComponentName(
                    otherAppActivity.applicationInfo.packageName,
                    otherAppActivity.name
                    );
            // make sure it does NOT open in the stack of your activity
            rateIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            // task reparenting if needed
            rateIntent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
            // if the Google Play was already open in a search result
            //  this make sure it still go to the app page you requested
            rateIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            // this make sure only the Google Play app is allowed to
            // intercept the intent
            rateIntent.setComponent(componentName);
            context.startActivity(rateIntent);
            marketFound = true;
            break;

        }
    }

    // if GP not present on device, open web browser
    if (!marketFound) {
        Intent webIntent = new Intent(Intent.ACTION_VIEW,
            Uri.parse("https://play.google.com/store/apps/details?id="+appId));
        context.startActivity(webIntent);
    }
}

Mesele şu ki, Google Play'in yanında daha fazla uygulama niyetimizi açabilirse, uygulama seçici iletişim kutusu atlanır ve GP uygulaması doğrudan başlatılır.

GÜNCELLEME: Bazen uygulamanın profilini açmadan yalnızca GP uygulamasını açtığı görülür. TrevorWiley'nin yorumunda önerdiği gibi Intent.FLAG_ACTIVITY_CLEAR_TOP, sorunu çözebilir. (Henüz kendim test etmedim ...)

Ne işe yaradığını anlamak için bu cevaba bakınız Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED.


4
Bu iyi olsa da, mevcut Google Play derlemesiyle de güvenilmez görünüyor, Google Play'de başka bir uygulama sayfası girip bu kodu tetiklerseniz, yalnızca Google Play'i açacak, ancak uygulamanıza gitmeyecek.
zoltish

2
@zoltish, bayraklara Intent.FLAG_ACTIVITY_CLEAR_TOP ekledim ve bu sorunu
çözüyor

Intent.FLAG_ACTIVITY_CLEAR_TOP kullandım | Amaç.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED ama çalışmıyor. Play Store'dan yeni Örnek açılmıyor
Praveen Kumar Verma

3
rateIntent.setPackage("com.android.vending")PlayStore uygulamasının tüm bu kodlar yerine bu amacı yerine getireceğinden emin olmak için ne yaparsınız ?
dum4ll3

3
@ dum4ll3 Sanırım yapabilirsiniz ancak bu kod ayrıca Google Play uygulamasının yüklü olup olmadığını da dolaylı olarak kontrol eder. Eğer kontrol
etmezseniz

81

Android Geliştirici resmi bağlantısına adım adım öğretici olarak gidin ve uygulama paketinizin kodunu play store'dan aldıysanız veya play store uygulamaları mevcut değilse web tarayıcısından uygulamayı açın.

Android Geliştirici resmi bağlantısı

https://developer.android.com/distribute/tools/promote/linking.html

Uygulama Sayfasına Bağlama

Bir web sitesinden: https://play.google.com/store/apps/details?id=<package_name>

Bir Android uygulamasından: market://details?id=<package_name>

Bir Ürün Listesine Bağlama

Bir web sitesinden: https://play.google.com/store/search?q=pub:<publisher_name>

Bir Android uygulamasından: market://search?q=pub:<publisher_name>

Bir Arama Sonucuna Bağlama

Bir web sitesinden: https://play.google.com/store/search?q=<search_query>&c=apps

Bir Android uygulamasından: market://search?q=<seach_query>&c=apps


Piyasa kullanımı: // öneki artık önerilmemektedir (gönderdiğiniz bağlantıyı kontrol edin)
Greg Ennis

@GregEnnis gördüğünüz pazar: // öneki artık önerilmiyor mu?
loki

@loki Bence artık bir öneri olarak listelenmiyor. Bu sayfada kelimeyi marketararsanız, herhangi bir çözüm bulamazsınız. Yeni yolun daha genel bir niyet geliştirici olduğunu düşünüyorum . Android.com/distribute/marketing-tools/… . Play Store uygulamasının daha yeni sürümlerinde muhtemelen bu URI için bir niyet filtresi varhttps://play.google.com/store/apps/details?id=com.example.android
tir38

25

bunu dene

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id=com.example.android"));
startActivity(intent);

1
Google oyununu bağımsız olarak nasıl açacağınız için (aynı uygulamada yeni bir görünüme gömülü değil) lütfen cevabımı kontrol edin.
code4jhon

21

Yukarıdaki yanıtların tümü, Google Play'i (veya başka bir uygulamayı) bağımsız olarak gerçekten açmak istiyorsanız, Google Play'i aynı uygulamanın yeni bir görünümünde açar:

Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.android.vending");

// package name and activity
ComponentName comp = new ComponentName("com.android.vending",
                                       "com.google.android.finsky.activities.LaunchUrlHandlerActivity"); 
launchIntent.setComponent(comp);

// sample to open facebook app
launchIntent.setData(Uri.parse("market://details?id=com.facebook.katana"));
startActivity(launchIntent);

Önemli olan, aslında google play'i veya başka bir uygulamayı bağımsız olarak açmasıdır.

Gördüğüm çoğu diğer cevapların yaklaşımını kullanıyor ve umarım ihtiyaç duyduğum şey bu değildi, bu birine yardımcı olur.

Saygılarımızla.


Nedir this.cordova? Değişken bildirimleri nerede? Nerede callbackilan edilir ve tanımlanır?
Eric

Bu sadece PackageManager bir örneğini ihtiyaç ve düzenli bir şekilde bir etkinlik başlatmak ... Bir Cordova eklenti parçası, bunu aslında alakalı olduğunu düşünmüyorum ama bunun cordova eklentidir github.com/lampaa hangi üzerine yazılmaması burada github.com/code4jhon/org.apache.cordova.startapp
code4jhon

4
Demek istediğim, bu kod gerçekten insanların kendi uygulamalarına kullanmak için bağlantı kurabilecekleri bir şey değil. Yağı kırpmak ve sadece temel yöntemi bırakmak gelecekteki okuyucular için yararlı olacaktır.
Eric

Evet, anlıyorum ... şimdilik hibrit uygulamalar kullanıyorum. Tamamen yerel kod test edilemiyor. Ama bence fikir orada. Eğer bir şansım varsa, kesin yerel satırlar ekleyeceğim.
code4jhon

İnşallah bu @eric yapacak
code4jhon

14

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

1
Google oyununu bağımsız olarak nasıl açacağınız için (aynı uygulamada yeni bir görünüme gömülü değil) lütfen cevabımı kontrol edin.
code4jhon

12

Eric'in yanıtı doğru ve Berťák'ın kodu da çalışıyor. Bence bu ikisini daha zarif bir şekilde birleştiriyor.

try {
    Intent appStoreIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName));
    appStoreIntent.setPackage("com.android.vending");

    startActivity(appStoreIntent);
} catch (android.content.ActivityNotFoundException exception) {
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
}

Kullanarak setPackagecihazı Play Store'u kullanmaya zorlarsınız. Yüklü bir Play Store yoksa, Exceptionyakalanır.


Resmi dokümanlar kullanmak https://play.google.com/store/apps/details?id=yerine market:gelip nasıl? developer.android.com/distribute/marketing-tools/… Yine de kapsamlı ve kısa bir cevap.
serv-inc

Emin değilim, ancak Android'in " play.google.com/store/apps " ifadesine dönüştüğü bir kısayol olduğunu düşünüyorum . Muhtemelen istisna olarak "market: //" kullanabilirsiniz.
M3-n50

11

pazar kullanın: //

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

7

Yapabilirsin:

final Uri marketUri = Uri.parse("market://details?id=" + packageName);
startActivity(new Intent(Intent.ACTION_VIEW, marketUri));

Referans olsun burada :

Bu sorunun kabul edilen cevabında açıklanan yaklaşımı da deneyebilirsiniz: Google Play Store'un Android cihazda yüklü olup olmadığını belirleyemiyorum


Zaten bu kodla denedim, bu aynı zamanda tarayıcı / oyun mağazasını seçme seçeneğini de gösteriyor, çünkü cihazım her iki uygulamayı da yükledi (google play store / tarayıcı).
Rajesh Kumar

Google oyununu bağımsız olarak nasıl açacağınız için (aynı uygulamada yeni bir görünüme gömülü değil) lütfen cevabımı kontrol edin.
code4jhon

7

Partiye çok geç Resmi belgeler burada. Ve açıklanan kod

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(
    "https://play.google.com/store/apps/details?id=com.example.android"));
intent.setPackage("com.android.vending");
startActivity(intent);

Bu niyet yapılandırmak üzere, pas "com.android.vending"içine Intent.setPackage()kullanıcıları uygulamanızın detaylarını görmek böylece Google Play Store uygulamasının yerine seçicinin . KOTLIN için

val intent = Intent(Intent.ACTION_VIEW).apply {
    data = Uri.parse(
            "https://play.google.com/store/apps/details?id=com.example.android")
    setPackage("com.android.vending")
}
startActivity(intent)

Google Play Anında Arama'yı kullanarak bir anlık uygulama yayınladıysanız, uygulamayı aşağıdaki gibi başlatabilirsiniz:

Intent intent = new Intent(Intent.ACTION_VIEW);
Uri.Builder uriBuilder = Uri.parse("https://play.google.com/store/apps/details")
    .buildUpon()
    .appendQueryParameter("id", "com.example.android")
    .appendQueryParameter("launch", "true");

// Optional parameters, such as referrer, are passed onto the launched
// instant app. You can retrieve these parameters using
// Activity.getIntent().getData().
uriBuilder.appendQueryParameter("referrer", "exampleCampaignId");

intent.setData(uriBuilder.build());
intent.setPackage("com.android.vending");
startActivity(intent);

KOTLIN için

val uriBuilder = Uri.parse("https://play.google.com/store/apps/details")
        .buildUpon()
        .appendQueryParameter("id", "com.example.android")
        .appendQueryParameter("launch", "true")

// Optional parameters, such as referrer, are passed onto the launched
// instant app. You can retrieve these parameters using Activity.intent.data.
uriBuilder.appendQueryParameter("referrer", "exampleCampaignId")

val intent = Intent(Intent.ACTION_VIEW).apply {
    data = uriBuilder.build()
    setPackage("com.android.vending")
}
startActivity(intent)

En azından yanlış olduğunu düşünüyorum Uri.parse("https://play.google.com/store/apps/details?id=. Bazı cihazlarda Play Market yerine web tarayıcısını açar.
CoolMind

Tüm kodlar resmi dokümanlardan alınmıştır. Bağlantı ayrıca yanıt koduna eklenmiş olup burada hızlı başvuru için açıklanmıştır.
Husnain Qasim

Bunun nedeni muhtemelen bu cihazların, Play Store uygulamasının bu URI ile eşleşen bir niyet filtresi olmayan daha eski bir sürümüne sahip olmalarıdır.
tir38

@ tir38, belki öyle. Belki Google Play Hizmetlerine sahip değiller veya yetkilendirilmiyorlar, hatırlamıyorum.
CoolMind

6

Gibi resmi dokümanlar kullanmak https://yerine market://, bu biçerdöver Eric'in ve kod yeniden birlikte M3-N50 cevabı (kendini tekrar etmez):

Intent intent = new Intent(Intent.ACTION_VIEW)
    .setData(Uri.parse("https://play.google.com/store/apps/details?id=" + getPackageName()));
try {
    startActivity(new Intent(intent)
                  .setPackage("com.android.vending"));
} catch (android.content.ActivityNotFoundException exception) {
    startActivity(intent);
}

Varsa GPlay uygulamasıyla açılmaya çalışır ve varsayılana geri döner.


5

Kullanıma hazır çözüm:

public class GoogleServicesUtils {

    public static void openAppInGooglePlay(Context context) {
        final String appPackageName = context.getPackageName();
        try {
            context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
        } catch (android.content.ActivityNotFoundException e) { // if there is no Google Play on device
            context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
        }
    }

}

Eric'in cevabına dayanarak.


1
Sizin için çalışıyor mu? Uygulamamın sayfasını değil, ana Google Play sayfasını açar.
Violet Zürafa

4

Kotlin:

Uzantı:

fun Activity.openAppInGooglePlay(){

val appId = BuildConfig.APPLICATION_ID
try {
    this.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=$appId")))
} catch (anfe: ActivityNotFoundException) {
    this.startActivity(
        Intent(
            Intent.ACTION_VIEW,
            Uri.parse("https://play.google.com/store/apps/details?id=$appId")
        )
    )
}}

Yöntem:

    fun openAppInGooglePlay(activity:Activity){

        val appId = BuildConfig.APPLICATION_ID
        try {
            activity.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=$appId")))
        } catch (anfe: ActivityNotFoundException) {
            activity.startActivity(
                Intent(
                    Intent.ACTION_VIEW,
                    Uri.parse("https://play.google.com/store/apps/details?id=$appId")
                )
            )
        }
    }

3

Google Play mağazasını uygulamanızdan açmak istiyorsanız, şu komutu doğrudan kullanın: market://details?gotohome=com.yourAppNameuygulamanızın Google Play mağaza sayfalarını açar.

Belirli bir yayıncının tüm uygulamalarını göster

Başlığında veya açıklamasında Sorguyu kullanan uygulamaları arayın

Referans: https://tricklio.com/market-details-gotohome-1/


3

Kotlin

fun openAppInPlayStore(appPackageName: String) {
    try {
        startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=$appPackageName")))
    } catch (exception: android.content.ActivityNotFoundException) {
        startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=$appPackageName")))
    }
}

2
public void launchPlayStore(Context context, String packageName) {
    Intent intent = null;
    try {
            intent = new Intent(Intent.ACTION_VIEW);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.setData(Uri.parse("market://details?id=" + packageName));
            context.startActivity(intent);
        } catch (android.content.ActivityNotFoundException anfe) {
            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + packageName)));
        }
    }

2

Bu amaçla kotlin entension fonksiyonum

fun Context.canPerformIntent(intent: Intent): Boolean {
        val mgr = this.packageManager
        val list = mgr.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY)
        return list.size > 0
    }

Ve faaliyetinizde

val uri = if (canPerformIntent(Intent(Intent.ACTION_VIEW, Uri.parse("market://")))) {
            Uri.parse("market://details?id=" + appPackageName)
        } else {
            Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)
        }
        startActivity(Intent(Intent.ACTION_VIEW, uri))

2

Yukarıdaki yanıtlardan, Google Play Store uygulamasını ve özellikle Play Store'u kullanarak uygulamayı açmaya çalışan ilk kod, başarısız olursa, web görünümünü kullanarak eylem görünümünü başlatacaktır: @Eric, @Jonathan Caballero için krediler

public void goToPlayStore() {
        String playStoreMarketUrl = "market://details?id=";
        String playStoreWebUrl = "https://play.google.com/store/apps/details?id=";
        String packageName = getActivity().getPackageName();
        try {
            Intent intent =  getActivity()
                            .getPackageManager()
                            .getLaunchIntentForPackage("com.android.vending");
            if (intent != null) {
                ComponentName androidComponent = new ComponentName("com.android.vending",
                        "com.google.android.finsky.activities.LaunchUrlHandlerActivity");
                intent.setComponent(androidComponent);
                intent.setData(Uri.parse(playStoreMarketUrl + packageName));
            } else {
                intent = new Intent(Intent.ACTION_VIEW, Uri.parse(playStoreMarketUrl + packageName));
            }
            startActivity(intent);
        } catch (ActivityNotFoundException e) {
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(playStoreWebUrl + packageName));
            startActivity(intent);
        }
    }

2

Bu bağlantı, uygulamayı Android'de otomatik olarak açacaktır: // Android'de iseniz ve PC'de iseniz tarayıcıda.

https://play.app.goo.gl/?link=https://play.google.com/store/apps/details?id=com.app.id&ddl=1&pcampaignid=web_ddl_1

Ne demek istiyorsun? Çözümümü denedin mi? Benim için çalıştı.
Nikolay Shindarov

Aslında görevimde bir web görünümü var ve web görünümünde herhangi bir URL yüklemem gerekiyor. ancak açık herhangi bir PlayStore URL'si varsa PlayStore açık düğmesini gösterir. bu yüzden bu düğmeyi tıklayarak uygulamayı açmam gerekiyor. herhangi bir uygulama için dinamik olacak, bu yüzden nasıl yönetebilirim?
hpAndro

Sadece bağlantıyı deneyinhttps://play.app.goo.gl/?link=https://play.google.com/store/apps/details?id=com.app.id&ddl=1&pcampaignid=web_ddl_1
Nikolay Shindarov

1

Her iki birleşti Berťák ve Stefano Munarini hem kolları hibrit çözüm oluşturma cevabını Oranı bu uygulama ve göster Daha App senaryoyu.

        /**
         * This method checks if GooglePlay is installed or not on the device and accordingly handle
         * Intents to view for rate App or Publisher's Profile
         *
         * @param showPublisherProfile pass true if you want to open Publisher Page else pass false to open APp page
         * @param publisherID          pass Dev ID if you have passed PublisherProfile true
         */
        public void openPlayStore(boolean showPublisherProfile, String publisherID) {

            //Error Handling
            if (publisherID == null || !publisherID.isEmpty()) {
                publisherID = "";
                //Log and continue
                Log.w("openPlayStore Method", "publisherID is invalid");
            }

            Intent openPlayStoreIntent;
            boolean isGooglePlayInstalled = false;

            if (showPublisherProfile) {
                //Open Publishers Profile on PlayStore
                openPlayStoreIntent = new Intent(Intent.ACTION_VIEW,
                        Uri.parse("market://search?q=pub:" + publisherID));
            } else {
                //Open this App on PlayStore
                openPlayStoreIntent = new Intent(Intent.ACTION_VIEW,
                        Uri.parse("market://details?id=" + getPackageName()));
            }

            // find all applications who can handle openPlayStoreIntent
            final List<ResolveInfo> otherApps = getPackageManager()
                    .queryIntentActivities(openPlayStoreIntent, 0);
            for (ResolveInfo otherApp : otherApps) {

                // look for Google Play application
                if (otherApp.activityInfo.applicationInfo.packageName.equals("com.android.vending")) {

                    ActivityInfo otherAppActivity = otherApp.activityInfo;
                    ComponentName componentName = new ComponentName(
                            otherAppActivity.applicationInfo.packageName,
                            otherAppActivity.name
                    );
                    // make sure it does NOT open in the stack of your activity
                    openPlayStoreIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    // task reparenting if needed
                    openPlayStoreIntent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
                    // if the Google Play was already open in a search result
                    //  this make sure it still go to the app page you requested
                    openPlayStoreIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    // this make sure only the Google Play app is allowed to
                    // intercept the intent
                    openPlayStoreIntent.setComponent(componentName);
                    startActivity(openPlayStoreIntent);
                    isGooglePlayInstalled = true;
                    break;

                }
            }
            // if Google Play is not Installed on the device, open web browser
            if (!isGooglePlayInstalled) {

                Intent webIntent;
                if (showPublisherProfile) {
                    //Open Publishers Profile on web browser
                    webIntent = new Intent(Intent.ACTION_VIEW,
                            Uri.parse("http://play.google.com/store/search?q=pub:" + getPackageName()));
                } else {
                    //Open this App on web browser
                    webIntent = new Intent(Intent.ACTION_VIEW,
                            Uri.parse("https://play.google.com/store/apps/details?id=" + getPackageName()));
                }
                startActivity(webIntent);
            }
        }

kullanım

  • Yayıncı Profilini Açmak İçin
   @OnClick(R.id.ll_more_apps)
        public void showMoreApps() {
            openPlayStore(true, "Hitesh Sahu");
        }
  • PlayStore'da Uygulama Sayfasını Açmak İçin
@OnClick(R.id.ll_rate_this_app)
public void openAppInPlayStore() {
    openPlayStore(false, "");
}

Bu kodu daha küçük yöntemlere bölmenizi öneririz. Bu spagetti önemli kodunu bulmak zor :) Artı size özel olduğunu kontrol "com.android.vending" Ne hakkında com.google.market
Aetherna

1

İnsanlar, bundan daha fazlasını alabileceğinizi unutmayın. Örneğin UTM takibi demek istiyorum. https://developers.google.com/analytics/devguides/collection/android/v4/campaigns

public static final String MODULE_ICON_PACK_FREE = "com.example.iconpack_free";
public static final String APP_STORE_URI =
        "market://details?id=%s&referrer=utm_source=%s&utm_medium=app&utm_campaign=plugin";
public static final String APP_STORE_GENERIC_URI =
        "https://play.google.com/store/apps/details?id=%s&referrer=utm_source=%s&utm_medium=app&utm_campaign=plugin";

try {
    startActivity(new Intent(
        Intent.ACTION_VIEW,
        Uri.parse(String.format(Locale.US,
            APP_STORE_URI,
            MODULE_ICON_PACK_FREE,
            getPackageName()))).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
} catch (android.content.ActivityNotFoundException anfe) {
    startActivity(new Intent(
        Intent.ACTION_VIEW,
        Uri.parse(String.format(Locale.US,
            APP_STORE_GENERIC_URI,
            MODULE_ICON_PACK_FREE,
            getPackageName()))).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
}

1

Yedek ve güncel sözdizimine sahip bir kotlin verison

 fun openAppInPlayStore() {
    val uri = Uri.parse("market://details?id=" + context.packageName)
    val goToMarketIntent = Intent(Intent.ACTION_VIEW, uri)

    var flags = Intent.FLAG_ACTIVITY_NO_HISTORY or Intent.FLAG_ACTIVITY_MULTIPLE_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
    flags = if (Build.VERSION.SDK_INT >= 21) {
        flags or Intent.FLAG_ACTIVITY_NEW_DOCUMENT
    } else {
        flags or Intent.FLAG_ACTIVITY_CLEAR_TASK
    }

    goToMarketIntent.addFlags(flags)

    try {
        startActivity(context, goToMarketIntent, null)
    } catch (e: ActivityNotFoundException) {
        val intent = Intent(Intent.ACTION_VIEW,
                Uri.parse("http://play.google.com/store/apps/details?id=" + context.packageName))

        startActivity(context, intent, null)
    }
}
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.