Saya 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 saya sebuah Tindakan Lengkap Lihat untuk memilih opsi (browser/play store). Saya perlu membuka aplikasi di Play Store langsung.
Anda dapat melakukan ini dengan menggunakan pasar://
prefix.
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)));
}
Kita menggunakan try/catch
blok di sini karena sebuah Pengecualian
akan dilemparkan jika Play Store tidak diinstal pada perangkat target.
CATATAN: aplikasi apapun dapat mendaftar sebagai mampu menangani pasar://rincian?id=<appId>
Uri, jika anda ingin untuk secara khusus menargetkan Google Play memeriksa Berťák jawaban
Banyak jawaban di sini sarankan untuk menggunakan Uri.mengurai("pasar://rincian?id=" + appPackageName))
buka Google Play, tapi saya pikir itu tidak cukup pada kenyataannya:
Beberapa aplikasi pihak ketiga dapat menggunakan sendiri intent-filter dengan "pasar://"
skema didefinisikan, sehingga mereka dapat memproses disediakan Uri bukan dari Google Play (saya mengalami situasi ini dengan e.g.SnapPea aplikasi). Pertanyaannya adalah "Bagaimana untuk membuka Google Play Store?", jadi saya berasumsi, bahwa anda tidak ingin membuka aplikasi lain. Perlu diketahui juga, bahwa misalnya rating aplikasi ini hanya relevan di GP app 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 bahwa ketika lebih banyak aplikasi selain Google Play dapat membuka niat kami, aplikasi-dialog pemilih dilewati dan GP aplikasi ini dimulai secara langsung.
UPDATE:
Kadang-kadang tampaknya bahwa terbuka GP aplikasi saja, tanpa membuka aplikasi's profil. Sebagai TrevorWiley yang disarankan dalam komentarnya, Maksud.FLAG_ACTIVITY_CLEAR_TOP
bisa memperbaiki masalah. (I didn't test sendiri belum...)
Lihat jawaban ini untuk memahami apa Maksud.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
tidak.
Pergi pada Pengembang Android link resmi sebagai tutorial langkah demi langkah melihat dan mendapat kode untuk paket aplikasi dari play store jika ada atau aplikasi play store yang tidak ada kemudian buka aplikasi dari web browser.
Pengembang Android link resmi
https://developer.android.com/distribute/tools/promote/linking.html
Menghubungkan ke Halaman Aplikasi
Dari situs web: https://play.google.com/store/apps/details?id=<package_name>
Dari Android app: pasar://rincian?id=<package_name>
Menghubungkan ke Produk Daftar
Dari situs web: https://play.google.com/store/search?q=pub:<publisher_name>
Dari Android app: market://search?q=pub:<publisher_name>
Menghubungkan Hasil Pencarian
Dari situs web: https://play.google.com/store/search?q=<search_query>&c=apps
Dari Android app: market://search?q=<seach_query>&c=apps
Semua jawaban atas buka Google Play di tampilan baru dari aplikasi yang sama, jika anda benar-benar ingin membuka Google Play (atau aplikasi lain) 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 bahwa benar-benar membuka google play atau app lainnya secara mandiri.
Sebagian besar dari apa yang saya lihat menggunakan pendekatan jawaban yang lain dan itu tidak apa yang saya butuhkan mudah-mudahan ini membantu seseorang.
Salam.
Anda dapat memeriksa apakah Google Play Store aplikasi ini diinstal dan, jika hal ini terjadi, anda dapat menggunakan "pasar://" protokol.
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);
Sementara Eric's jawaban yang benar dan Berťák's kode juga bekerja. Saya pikir ini menggabungkan kedua 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 diinstal, Pengecualian
akan tertangkap.
Yang dapat anda lakukan:
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 menerima jawaban dari pertanyaan ini: https://stackoverflow.com/questions/10551531/cannot-determine-whether-google-play-store-is-installed-or-not-on-android-device
Sangat terlambat dalam partai Official docs 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 maksud ini, lulus "com.android.penjual"
menjadi Niat.setPackage()
sehingga pengguna melihat aplikasi anda's rincian dalam Google Play Store app bukan pemilih.
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 diterbitkan instan aplikasi 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)
Sebagai resmi docs menggunakan https://
bukan pasar://
, ini menggabungkan Eric's dan M3-n50's jawaban dengan kode reuse (don't repeat yourself):
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);
}
Ia mencoba untuk membuka dengan GPlay aplikasi jika ada, dan jatuh kembali ke default.
Siap-untuk-menggunakan solusi:
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 Eric's jawaban.
Kotlin:
Ekstensi:
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")
)
)
}
}
Jika anda ingin membuka Google Play store dari aplikasi anda kemudian gunakan perintah ini langsung: pasar://rincian?gotohome=com.yourAppName
, itu akan membuka aplikasi anda's Google Play store halaman.
Tampilkan semua apps by tertentu penerbit
Mencari aplikasi yang menggunakan Query pada judul atau deskripsi
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)));
}
}
Saya kotlin entension fungsi 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))
Berikut ini adalah kode akhir dari jawaban-jawaban di atas bahwa upaya pertama untuk membuka aplikasi menggunakan aplikasi Google play store dan khusus play store, jika gagal, ia akan memulai aksi view menggunakan versi web: Kredit untuk @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);
}
}
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")))
}
}
Masyarakat, jangan lupa bahwa anda benar-benar bisa mendapatkan sesuatu yang lebih dari itu. Maksudku UTM tracking 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));
}
Sebuah kotlin nampaknya dengan fallback dan saat ini sintaks
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)
}
}