Bagaimana cara membuka Google Play Store langsung dari aplikasi Android saya?


569

Saya telah membuka Google Play store menggunakan kode berikut

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

Tapi itu menunjukkan kepada saya Tampilan Tindakan Lengkap untuk memilih opsi (browser / play store). Saya perlu membuka aplikasi di Play Store secara langsung.


Jawaban:


1437

Anda dapat melakukan ini menggunakan market://awalan .

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

Kami menggunakan try/catchblok di sini karena sebuah Exceptionakan dilemparkan jika Play Store tidak diinstal pada perangkat target.

CATATAN : aplikasi apa pun dapat mendaftar karena mampu menangani market://details?id=<appId>Uri, jika Anda ingin secara khusus menargetkan Google Play periksa jawaban Berťák


53
jika Anda ingin mengarahkan ulang ke semua aplikasi Pengembang, gunakan market://search?q=pub:"+devNamedanhttp://play.google.com/store/search?q=pub:"+devName
Stefano Munarini

4
Solusi ini tidak berfungsi, jika beberapa aplikasi menggunakan filter maksud dengan skema "market: //" didefinisikan. Lihat jawaban saya bagaimana membuka Google Play DAN HANYA aplikasi Google Play (atau webbrowser jika GP tidak ada). :-)
Berťák

18
Untuk proyek yang menggunakan sistem pembangunan Gradle, appPackageNamesebenarnya BuildConfig.APPLICATION_ID. Tidak ada Context/ Activitydependensi, mengurangi risiko kebocoran memori.
Christian García

3
Anda masih membutuhkan konteks untuk meluncurkan niat. Context.startActivity ()
wblaschko

2
Solusi ini mengasumsikan ada niat untuk membuka browser web. Ini tidak selalu benar (seperti di Android TV) jadi berhati-hatilah. Anda mungkin ingin menggunakan intent.resolveActivity (getPackageManager ()) untuk menentukan apa yang harus dilakukan.
Coda

161

Banyak jawaban di sini menyarankan untuk digunakan Uri.parse("market://details?id=" + appPackageName)) untuk membuka Google Play, tetapi saya pikir itu sebenarnya tidak cukup :

Beberapa aplikasi pihak ketiga dapat menggunakan filter maksud sendiri dengan "market://"skema yang ditentukan , sehingga mereka dapat memproses Uri yang disediakan alih-alih Google Play (Saya mengalami situasi ini dengan aplikasi egSnapPea). Pertanyaannya adalah "Bagaimana cara membuka Google Play Store?", Jadi saya berasumsi, bahwa Anda tidak ingin membuka aplikasi lain. Harap perhatikan juga, bahwa misalnya peringkat aplikasi hanya relevan di aplikasi GP Store, dll. ...

Untuk membuka Google Play DAN HANYA Google Play saya menggunakan metode ini:

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

Intinya adalah ketika lebih banyak aplikasi di samping Google Play dapat membuka maksud kami, dialog pemilih aplikasi dilewati dan aplikasi GP dimulai secara langsung.

PEMBARUAN: Terkadang sepertinya hanya membuka aplikasi GP, tanpa membuka profil aplikasi. Seperti yang disarankan TrevorWiley dalam komentarnya, Intent.FLAG_ACTIVITY_CLEAR_TOPdapat memperbaiki masalahnya. (Saya belum mengujinya sendiri ...)

Lihat jawaban ini untuk memahami apa yang Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDEDterjadi.


4
Meskipun ini bagus, tampaknya juga tidak dapat diandalkan dengan Google Play build saat ini, jika Anda memasuki halaman aplikasi lain di Google Play kemudian memicu kode ini, itu hanya akan membuka Google Play tetapi tidak membuka aplikasi Anda.
Zoltish

2
@ Zoltish, saya telah menambahkan Intent.FLAG_ACTIVITY_CLEAR_TOP ke flag dan sepertinya memperbaiki masalah
TrevorWiley

Saya telah menggunakan Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED tetapi tidak berfungsi. tidak ada Instance baru yang terbuka di Play store
Praveen Kumar Verma

3
Apa yang terjadi jika Anda menggunakan rateIntent.setPackage("com.android.vending")untuk memastikan aplikasi PlayStore akan menangani maksud ini, Alih-alih semua kode ini?
dum4ll3

3
@ dum4ll3 Saya kira Anda bisa tetapi kode ini juga secara implisit memeriksa apakah aplikasi Google Play diinstal. Jika Anda tidak memeriksanya, Anda perlu menangkap ActivityNotFound
Daniele Segato

81

Buka tautan resmi Pengembang Android sebagai tutorial langkah demi langkah, lihat dan dapatkan kode untuk paket aplikasi Anda dari play store jika ada atau aplikasi play store tidak ada, kemudian buka aplikasi dari browser web.

Tautan resmi Pengembang Android

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

Menautkan ke Halaman Aplikasi

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

Dari aplikasi Android: market://details?id=<package_name>

Menautkan ke Daftar Produk

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

Dari aplikasi Android: market://search?q=pub:<publisher_name>

Menautkan ke Hasil Pencarian

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

Dari aplikasi Android: market://search?q=<seach_query>&c=apps


Menggunakan pasar: // awalan tidak disarankan lagi (periksa tautan yang Anda poskan)
Greg Ennis

@GregEnnis di mana Anda melihat pasar itu: // awalan tidak disarankan lagi?
loki

@loki Saya pikir intinya adalah bahwa itu tidak terdaftar sebagai saran lagi. Jika Anda mencari kata itu di halaman marketAnda tidak akan menemukan solusi. Saya pikir cara baru adalah untuk melepaskan developer.android.com/distribute/marketing-tools/… niat niat yang lebih umum . Versi terbaru dari aplikasi Play Store mungkin memiliki filter maksud untuk URI inihttps://play.google.com/store/apps/details?id=com.example.android
tir38

25

coba ini

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

1
Untuk cara membuka google play secara independen (tidak tertanam dalam tampilan baru di aplikasi yang sama) silakan periksa jawaban saya.
code4jhon

21

Semua jawaban di atas membuka Google Play dalam tampilan baru aplikasi yang sama, jika Anda benar-benar ingin membuka Google Play (atau aplikasi lain) secara mandiri:

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

Bagian yang penting adalah yang benar-benar membuka google play atau aplikasi lain secara mandiri.

Sebagian besar dari apa yang saya lihat menggunakan pendekatan dari jawaban lain dan bukan itu yang saya butuhkan semoga ini membantu seseorang.

Salam.


Apa this.cordova? Di mana deklarasi variabel? Di mana callbackdideklarasikan dan ditentukan?
Eric

ini adalah bagian dari plugin Cordova, saya tidak berpikir itu benar-benar relevan ... Anda hanya perlu contoh PackageManager dan memulai suatu kegiatan secara teratur tetapi ini adalah plugin cordova dari github.com/lampaa yang saya timpa di sini github.com/code4jhon/org.apache.cordova.startapp
code4jhon

4
Maksud saya adalah bahwa, kode ini bukan sesuatu yang bisa orang portingkan ke aplikasi mereka sendiri untuk digunakan. Memotong lemak dan meninggalkan metode inti saja akan bermanfaat bagi pembaca di masa depan.
Eric

Ya, saya mengerti ... untuk saat ini saya menggunakan aplikasi hybrid. Tidak dapat benar-benar menguji kode asli sepenuhnya. Tapi saya pikir idenya ada di sana. Jika saya memiliki kesempatan, saya akan menambahkan baris asli yang tepat.
code4jhon

semoga ini akan membuatnya @eric
code4jhon

14

Anda dapat memeriksa apakah Google Play Store diinstal dan, jika ini masalahnya, Anda dapat menggunakan protokol "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);

1
Untuk cara membuka google play secara independen (tidak tertanam dalam tampilan baru di aplikasi yang sama) silakan periksa jawaban saya.
code4jhon

12

Sementara jawaban Eric sudah benar dan kode Berťák juga berfungsi. Saya pikir ini menggabungkan keduanya dengan lebih elegan.

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

Dengan menggunakan setPackage, Anda memaksa perangkat untuk menggunakan Play Store. Jika tidak ada Play Store yang diinstal, yang Exceptionakan ditangkap.


Penggunaan dokumen resmi https://play.google.com/store/apps/details?id=bukan market:Bagaimana bisa? developer.android.com/distribute/marketing-tools/... Masih merupakan jawaban yang komprehensif dan singkat.
serv-inc

Saya tidak yakin, tapi saya pikir ini adalah jalan pintas yang diterjemahkan Android ke " play.google.com/store/apps ". Anda mungkin dapat menggunakan "market: //" di pengecualian juga.
M3-n50

11

gunakan pasar: //

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

7

Anda dapat melakukan:

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

dapatkan Referensi di sini :

Anda juga dapat mencoba pendekatan yang dijelaskan dalam jawaban yang diterima dari pertanyaan ini: Tidak dapat menentukan apakah Google play store diinstal atau tidak pada perangkat Android


Saya sudah mencoba dengan kode ini, ini juga menunjukkan opsi untuk memilih browser / play store, karena perangkat saya telah menginstal kedua aplikasi (google play store / browser).
Rajesh Kumar

Untuk cara membuka google play secara independen (tidak tertanam dalam tampilan baru di aplikasi yang sama) silakan periksa jawaban saya.
code4jhon

7

Sangat terlambat di pesta Dokumen resmi ada di sini. Dan kode yang dijelaskan adalah

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

Saat Anda mengkonfigurasi niat ini, melewati "com.android.vending"ke dalam Intent.setPackage()sehingga pengguna melihat detail aplikasi Anda di Google Play Store aplikasi bukan pemilih yang . untuk KOTLIN

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)

Jika Anda telah menerbitkan aplikasi instan menggunakan Google Play Instan, Anda dapat meluncurkan aplikasi sebagai berikut:

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

Untuk KOTLIN

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)

Saya pikir, ini salah, setidaknya Uri.parse("https://play.google.com/store/apps/details?id=,. Pada beberapa perangkat ini membuka browser web, bukan Play Market.
CoolMind

Semua kode diambil dari dokumen resmi. Tautan juga dilampirkan dalam kode jawaban yang dijelaskan di sini untuk referensi cepat.
Husnain Qasim

@ CoolMind alasan untuk itu mungkin karena perangkat tersebut memiliki versi aplikasi Play Store yang lebih lama yang tidak memiliki filter maksud yang cocok dengan URI itu.
tir38

@ tir38, mungkin begitu. Mungkin mereka tidak memiliki Layanan Google Play atau tidak diotorisasi di dalamnya, saya tidak ingat.
CoolMind

6

Sebagai ganti penggunaan dokumen resmi , ini menggabungkan jawaban Eric dan M3-n50 dengan penggunaan kembali kode (jangan ulangi sendiri):https://market://

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

Mencoba untuk membuka dengan aplikasi GPlay jika ada dan kembali ke default.


5

Solusi siap pakai:

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

}

Berdasarkan jawaban Eric.


1
Apakah itu berhasil untuk Anda? Ini membuka halaman Google Play utama, bukan halaman aplikasi saya.
Violet Giraffe

4

Kotlin:

Perpanjangan:

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

Metode:

    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

Jika Anda ingin membuka Google Play store dari aplikasi Anda kemudian gunakan perintah ini secara langsung:, market://details?gotohome=com.yourAppNameitu akan membuka halaman Google Play store aplikasi Anda.

Tampilkan semua aplikasi oleh penerbit tertentu

Cari aplikasi yang menggunakan Kueri pada judul atau deskripsi

Referensi: 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

Fungsi kotlin saya berfungsi untuk tujuan ini

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

Dan dalam aktivitas Anda

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

Berikut adalah kode terakhir dari jawaban di atas yang pertama kali mencoba untuk membuka aplikasi menggunakan aplikasi Google play store dan khususnya play store, jika gagal, itu akan memulai tampilan tindakan menggunakan versi web: Kredit ke @Eric, @Jonathan Caballero

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

Tautan ini akan membuka aplikasi secara otomatis di pasar: // jika Anda menggunakan Android dan browser jika Anda menggunakan PC.

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

Apa maksudmu? Apakah Anda mencoba solusi saya? Ini berhasil untuk saya.
Nikolay Shindarov

Sebenarnya dalam tugas saya, ada tampilan web dan di tampilan web saya harus memuat URL apa pun. tetapi dalam hal itu jika ada url playstore yang terbuka itu menunjukkan tombol playstore terbuka. jadi saya perlu membuka aplikasi dengan mengklik tombol itu. itu akan dinamis untuk aplikasi apa pun, jadi bagaimana saya bisa mengelola?
hpAndro

Coba saja tautannyahttps://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

Saya telah menggabungkan jawaban Berťák dan Stefano Munarini untuk membuat solusi hybrid yang menangani skenario Beri Nilai Aplikasi ini dan Tampilkan Lebih Banyak Aplikasi .

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

Pemakaian

  • Untuk Membuka Profil Penerbit
   @OnClick(R.id.ll_more_apps)
        public void showMoreApps() {
            openPlayStore(true, "Hitesh Sahu");
        }
  • Untuk Membuka Halaman Aplikasi di PlayStore
@OnClick(R.id.ll_rate_this_app)
public void openAppInPlayStore() {
    openPlayStore(false, "");
}

Saya sarankan membagi kode ini menjadi metode yang lebih kecil. Sulit untuk menemukan kode penting dalam spageti ini :) Plus Anda sedang memeriksa "com.android.vending" bagaimana dengan com.google.market
Aetherna

1

Teman-teman, jangan lupa bahwa Anda benar-benar bisa mendapatkan sesuatu yang lebih dari itu. Maksudku pelacakan UTM misalnya. 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

Sebuah kotlin verison dengan fallback dan sintaksis saat ini

 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)
    }
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.