2011-08-01 13 views
15

Actualmente estoy desarrollando una aplicación en Android donde quiero dar algunas funcionalidades al usuario para calificar la aplicación actual. Su será un botón en su clic, preguntará si el usuario desea calificar la aplicación o no. Si es así irá a la aplicación de mercado en el dispositivo para calificar la aplicación (Market debería mostrar esta aplicación) o se abrirá el navegador que cargará el mercado & mostrando esta aplicación. Cualquiera usó este tipo de funcionalidad antes. Por favor, brinde ayuda.Usar la aplicación para evaluarla en el mercado

Gracias.

Respuesta

40

siempre uso un método como éste:

private void launchMarket() { 
    Uri uri = Uri.parse("market://details?id=" + getPackageName()); 
    Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri); 
    try { 
     startActivity(goToMarket); 
    } catch (ActivityNotFoundException e) { 
     Toast.makeText(this, R.string.couldnt_launch_market, Toast.LENGTH_LONG).show(); 
    } 
} 
+1

@Cristian --- Gracias por la respuesta rápida .. Solo una consulta-- en el lugar de getPackageName() Debo proporcionar mi paquete de aplicaciones ¿verdad? ¿También creo que necesito detectar que el dispositivo tiene aplicación en el mercado o no? En general, el dispositivo debe tenerlo, pero en caso de que el usuario lo haya eliminado Entonces, ¿cómo comprobar la aplicación de mercado está presente o no? –

+1

http://developer.android.com/reference/android/content/Context.html#getPackageName%28%29 No, tomará el nombre del paquete por usted. Esto arroja una excepción si no hay una aplicación de mercado instalada y muestra un brindis. – Rob

+0

Gracias Cristian ... –

2
public class AppRater { 
private final static String APP_TITLE = "App Name";// App Name 
private final static String APP_PNAME = "com.example.name";// Package Name 

private final static int DAYS_UNTIL_PROMPT = 3;//Min number of days 
private final static int LAUNCHES_UNTIL_PROMPT = 3;//Min number of launches 

public static void app_launched(Context mContext) { 
    SharedPreferences prefs = mContext.getSharedPreferences("apprater", 0); 
    if (prefs.getBoolean("dontshowagain", false)) { return ; } 

    SharedPreferences.Editor editor = prefs.edit(); 

    // Increment launch counter 
    long launch_count = prefs.getLong("launch_count", 0) + 1; 
    editor.putLong("launch_count", launch_count); 

    // Get date of first launch 
    Long date_firstLaunch = prefs.getLong("date_firstlaunch", 0); 
    if (date_firstLaunch == 0) { 
     date_firstLaunch = System.currentTimeMillis(); 
     editor.putLong("date_firstlaunch", date_firstLaunch); 
    } 

    // Wait at least n days before opening 
    if (launch_count >= LAUNCHES_UNTIL_PROMPT) { 
     if (System.currentTimeMillis() >= date_firstLaunch + 
       (DAYS_UNTIL_PROMPT * 24 * 60 * 60 * 1000)) { 
      showRateDialog(mContext, editor); 
     } 
    } 

    editor.commit(); 
} 

public static void showRateDialog(final Context mContext, final SharedPreferences.Editor editor) { 
    final Dialog dialog = new Dialog(mContext); 
    dialog.setTitle("Rate " + APP_TITLE); 

    LinearLayout ll = new LinearLayout(mContext); 
    ll.setOrientation(LinearLayout.VERTICAL); 

    TextView tv = new TextView(mContext); 
    tv.setText("If you enjoy using " + APP_TITLE + ", please take a moment to rate it. Thanks for your support!"); 
    tv.setWidth(240); 
    tv.setPadding(4, 0, 4, 10); 
    ll.addView(tv); 

    Button b1 = new Button(mContext); 
    b1.setText("Rate " + APP_TITLE); 
    b1.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + APP_PNAME))); 
      dialog.dismiss(); 
     } 
    });   
    ll.addView(b1); 

    Button b2 = new Button(mContext); 
    b2.setText("Remind me later"); 
    b2.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      dialog.dismiss(); 
     } 
    }); 
    ll.addView(b2); 

    Button b3 = new Button(mContext); 
    b3.setText("No, thanks"); 
    b3.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      if (editor != null) { 
       editor.putBoolean("dontshowagain", true); 
       editor.commit(); 
      } 
      dialog.dismiss(); 
     } 
    }); 
    ll.addView(b3); 

    dialog.setContentView(ll);   
    dialog.show();   
}} 

integran ahora la clase a su actividad como esta ->

AppRater.app_launched(this); 
+2

¿cómo podemos estar seguros si el usuario ya nos ha calificado o no? –

+0

cómo manejarlo si solo visita nuestra aplicación ... ¿no está calificado? –

Cuestiones relacionadas