with tengo services play open market intent gotohome google descargar app aplicación android android-intent google-play

android - tengo - Enlace "Calificar esta aplicación" en la aplicación Google Play store en el teléfono



open app with intent android (12)

Me gustaría poner un enlace "Calificar esta aplicación" en una aplicación de Android para abrir la lista de aplicaciones en la tienda de Google Play del usuario en su teléfono.

  1. ¿Qué código debo escribir para crear el market:// o http:// -link abierto en la aplicación de la tienda Google Play en el teléfono?
  2. ¿Dónde pones el código?
  3. ¿Alguien tiene una implementación de ejemplo de esto?
  4. ¿Tiene que especificar la pantalla donde se colocará el enlace market:// o http:// , y cuál es el mejor para usar - market:// o http:// ?

Abro la Play Store desde mi aplicación con el siguiente código:

Uri uri = Uri.parse("market://details?id=" + context.getPackageName()); Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri); // To count with Play market backstack, After pressing back button, // to taken back to our application, we need to add following flags to intent. goToMarket.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_NEW_DOCUMENT | Intent.FLAG_ACTIVITY_MULTIPLE_TASK); try { startActivity(goToMarket); } catch (ActivityNotFoundException e) { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=" + context.getPackageName()))); }

Esto abrirá Play Store con su página de aplicación ya abierta. El usuario puede puntuarlo allí.


Aquí hay un código de trabajo y actualizado :)

/* * Start with rating the app * Determine if the Play Store is installed on the device * * */ public void rateApp() { try { Intent rateIntent = rateIntentForUrl("market://details"); startActivity(rateIntent); } catch (ActivityNotFoundException e) { Intent rateIntent = rateIntentForUrl("https://play.google.com/store/apps/details"); startActivity(rateIntent); } } private Intent rateIntentForUrl(String url) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(String.format("%s?id=%s", url, getPackageName()))); int flags = Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_MULTIPLE_TASK; if (Build.VERSION.SDK_INT >= 21) { flags |= Intent.FLAG_ACTIVITY_NEW_DOCUMENT; } else { //noinspection deprecation flags |= Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET; } intent.addFlags(flags); return intent; }

Ponga el código en la Activity que desea llamar.
Cuando el usuario haga clic en un botón para calificar la aplicación, simplemente llame a la función rateApp() .


Debe este simple código para calificar su aplicación en su actividad.

try { Uri uri = Uri.parse("market://details?id=" + getPackageName()); Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri); startActivity(goToMarket); } catch (ActivityNotFoundException e) { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=" + getPackageName()))); }


Esto es si publica su aplicación en Google Play Store y Amazon Appstore. También me ocupo del caso de que los usuarios (especialmente en China) no tengan tanto la tienda de aplicaciones como el navegador.

public void goToMyApp(boolean googlePlay) {//true if Google Play, false if Amazone Store try { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse((googlePlay ? "market://details?id=" : "amzn://apps/android?p=") +getPackageName()))); } catch (ActivityNotFoundException e1) { try { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse((googlePlay ? "http://play.google.com/store/apps/details?id=" : "http://www.amazon.com/gp/mas/dl/android?p=") +getPackageName()))); } catch (ActivityNotFoundException e2) { Toast.makeText(this, "You don''t have any app that can open this link", Toast.LENGTH_SHORT).show(); } } }


Otro enfoque que puede funcionar para usted es Linkify. Si tengo un TextView que le pide al usuario que califique la aplicación, puedo vincular un par de palabras en el texto para que estén resaltadas y cuando el usuario las toque, se abre la Play Store, lista para su revisión:

class playTransformFilter implements TransformFilter { public String transformUrl(Matcher match, String url) { return "market://details?id=com.qwertyasd.yourapp"; } } class playMatchFilter implements MatchFilter { public boolean acceptMatch(CharSequence s, int start, int end) { return true; } } text1 = (TextView) findViewById(R.id.text1); text1.setText("Please rate it."); final Pattern playMatcher = Pattern.compile("rate it"); Linkify.addLinks(text1, playMatcher, "", new playMatchFilter(), new playTransformFilter());


Puedes usar esto, me funciona

public static void showRateDialogForRate(final Context context) { AlertDialog.Builder builder = new AlertDialog.Builder(context) .setTitle("Rate application") .setMessage("Please, rate the app at PlayMarket") .setPositiveButton("RATE", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (context != null) { //////////////////////////////// Uri uri = Uri.parse("market://details?id=" + context.getPackageName()); Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri); // To count with Play market backstack, After pressing back button, // to taken back to our application, we need to add following flags to intent. goToMarket.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET | Intent.FLAG_ACTIVITY_MULTIPLE_TASK); try { context.startActivity(goToMarket); } catch (ActivityNotFoundException e) { context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=" + context.getPackageName()))); } } } }) .setNegativeButton("CANCEL", null); builder.show(); }


Siempre puede llamar a getInstalledPackages() desde la clase PackageManager y verificar que la clase de mercado esté instalada. También puede usar queryIntentActivities() para asegurarse de que el Intent que construye pueda ser manejado por algo, incluso si no es la aplicación de mercado. Esto es probablemente lo mejor que se puede hacer en realidad porque es el más flexible y robusto.

Puedes comprobar si la aplicación de mercado está ahí

Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse("market://search?q=foo")); PackageManager pm = getPackageManager(); List<ResolveInfo> list = pm.queryIntentActivities(intent, 0);

Si la lista tiene al menos una entrada, el mercado está allí.

Puede usar lo siguiente para iniciar Android Market en la página de su aplicación, es un poco más automatizado:

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

Si desea probar esto en su emulador, es probable que no tenga el mercado instalado: vea estos enlaces para obtener más detalles:

Cómo habilitar el Android Market en el emulador de Android de Google

Instalación de Google Play en el emulador de Android


Un punto relacionado con todas las respuestas que tienen implementaciones basadas en la estrategia getPackageName () es que el uso de BuildConfig.APPLICATION_ID puede ser más sencillo y funciona bien si usa la misma base de código para crear múltiples aplicaciones con diferentes ID de aplicación (por ejemplo, un producto de marca blanca).


Utilizo este enfoque para hacer que el usuario califique mis aplicaciones:

public static void showRateDialog(final Context context) { AlertDialog.Builder builder = new AlertDialog.Builder(context) .setTitle("Rate application") .setMessage("Please, rate the app at PlayMarket") .setPositiveButton("RATE", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (context != null) { String link = "market://details?id="; try { // play market available context.getPackageManager() .getPackageInfo("com.android.vending", 0); // not available } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); // should use browser link = "https://play.google.com/store/apps/details?id="; } // starts external action context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(link + context.getPackageName()))); } } }) .setNegativeButton("CANCEL", null); builder.show(); }


Yo siempre uso este código:

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=PackageName")));


Calificación de Play Store

btn_rate_us.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Uri uri = Uri.parse("market://details?id=" + getPackageName()); Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri); // To count with Play market backstack, After pressing back button, // to taken back to our application, we need to add following flags to intent. goToMarket.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_NEW_DOCUMENT | Intent.FLAG_ACTIVITY_MULTIPLE_TASK); try { startActivity(goToMarket); } catch (ActivityNotFoundException e) { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=" + getPackageName()))); } } });


import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Build; import android.support.annotation.StringRes; import android.widget.Toast; public class PlayStoreLink { public void checkForUpdate(Context context, int applicationId) { try { context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(context.getString(R.string.url_market_details) + applicationId))); } catch (android.content.ActivityNotFoundException anfe) { try { context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(context.getString(R.string.url_playstore_app) + applicationId))); } catch (Exception e) { Toast.makeText(context, R.string.install_google_play_store, Toast.LENGTH_SHORT).show(); } } } public void moreApps(Context context, @StringRes int devName) { try { context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(context.getString(R.string.url_market_search_app) + context.getString(devName)))); } catch (android.content.ActivityNotFoundException anfe) { try { context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(context.getString(R.string.url_playstore_search_app) + context.getString(devName)))); } catch (Exception e) { Toast.makeText(context, R.string.install_google_play_store, Toast.LENGTH_SHORT).show(); } } } public void rateApp(Context context, int applicationId) { try { Uri uri = Uri.parse(context.getString(R.string.url_market_details) + applicationId); Intent intent = new Intent(Intent.ACTION_VIEW, uri); int flags = Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_MULTIPLE_TASK; if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) flags |= Intent.FLAG_ACTIVITY_NEW_DOCUMENT; else flags |= Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET; intent.addFlags(flags); context.startActivity(intent); } catch (ActivityNotFoundException e) { checkForUpdate(context, applicationId); } } }

<string name="install_google_play_store" translatable="false">Please install google play store and then try again.</string> <string name="url_market_details" translatable="false">market://details?id=</string> <string name="url_playstore_app" translatable="false">https://play.google.com/store/apps/details?id=</string> <string name="url_market_search_app" translatable="false">market://search?q=pub:</string> <string name="url_playstore_search_app" translatable="false">http://play.google.com/store/search?q=pub:</string> <string name="app_link" translatable="false">https://play.google.com/store/apps/details?id=</string>

devName es el nombre de la cuenta de desarrollador en Play Store