2011-08-01 20 views
15

Obecnie tworzę aplikację w systemie Android, w której chcę nadać użytkownikowi pewne funkcje, aby ocenić bieżącą aplikację. Ich będzie przycisk na jego kliknięciu, pojawi się pytanie, czy użytkownik chce ocenić aplikację, czy nie? Jeśli tak, przejdzie do aplikacji rynkowej na urządzeniu do oceny aplikacji (rynek powinien pokazywać tę aplikację.) Lub otworzy przeglądarkę, która załaduje rynek & przedstawiając tę ​​aplikację. Każdy wcześniej korzystał z tego rodzaju funkcji. Proszę o pomoc.Użyj aplikacji, aby ocenić ją na rynku.

Dziękuję.

Odpowiedz

40

zawsze stosować metodę jak ten:

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 --- Dzięki za szybką odpowiedź .. Tylko jedno zapytanie - w miejscu getPackageName() powinienem podać mój pakiet aplikacji? Również myślę, że muszę wykryć urządzenie ma aplikacji rynkowej, czy nie? Ogólnie rzecz biorąc, urządzenie musi je mieć, ale na wypadek, gdyby użytkownik je usunął. . Jak sprawdzić, czy aplikacja na rynku jest obecna, czy nie? –

+1

http://developer.android.com/reference/android/content/Context.html#getPackageName%28%29 Nie, otrzyma nazwę pakietu za Ciebie. Zgłasza wyjątek, jeśli nie jest zainstalowana aplikacja rynkowa i wyświetla toast. – Rob

+0

Dzięki 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();   
}} 

zintegrować klasę swojej działalności jak ten ->

AppRater.app_launched(this); 
+2

jak możemy być pewni, że użytkownik już nas ocenił, czy nie ??? –

+0

jak sobie poradzić, jeśli skorzystasz po prostu odwiedź naszą aplikację ... nie oceniasz? –