summaryrefslogtreecommitdiff
path: root/src/org/fox/ttrss/util/AppRater.java
diff options
context:
space:
mode:
authorAndrew Dolgov <fox@fakecake.org>2012-06-19 18:00:38 +0400
committerAndrew Dolgov <fox@fakecake.org>2012-06-19 18:00:38 +0400
commit82035f40035bf5fb72b24fe8cc38491ff5d7dfc6 (patch)
tree825ffbf2d98a311ee4ba4c5b1581afd28e9aeeb0 /src/org/fox/ttrss/util/AppRater.java
parent299682bb6d4e2e9f2b0f0553f6f475f7f7585a99 (diff)
parentf01f0ab35831fefbee30a4ae587ae1edf5c1fe20 (diff)
Merge branch 'master' of github.com:gothfox/Tiny-Tiny-RSS-for-Honeycomb
Diffstat (limited to 'src/org/fox/ttrss/util/AppRater.java')
-rw-r--r--src/org/fox/ttrss/util/AppRater.java100
1 files changed, 100 insertions, 0 deletions
diff --git a/src/org/fox/ttrss/util/AppRater.java b/src/org/fox/ttrss/util/AppRater.java
new file mode 100644
index 00000000..a50cc9d9
--- /dev/null
+++ b/src/org/fox/ttrss/util/AppRater.java
@@ -0,0 +1,100 @@
+package org.fox.ttrss.util;
+
+// From http://androidsnippets.com/prompt-engaged-users-to-rate-your-app-in-the-android-market-appirater
+
+import android.app.Dialog;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.net.Uri;
+import android.util.Log;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+public class AppRater {
+ private final static String APP_TITLE = "Tiny Tiny RSS";
+ private final static String APP_PNAME = "org.fox.ttrss";
+
+ private final static int DAYS_UNTIL_PROMPT = 3;
+ private final static int LAUNCHES_UNTIL_PROMPT = 7;
+
+ public static void appLaunched(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();
+ }
+} \ No newline at end of file