当前位置: 首页 > 知识库问答 >
问题:

如何在Android应用中实现Rate It功能

景俊拔
2023-03-14

我正在开发一个Android应用程序。一切都正常运转。我的应用程序已经准备好推出了。但在这里我还需要实现一个特性。我需要显示一个包含

评级稍后提醒

共有1个答案

微生旻
2023-03-14

在某种程度上,我很久以前就实现了这一点。不可能知道一个用户是否给一个应用程序打分,以防打分变成一种货币(一些开发者可能会添加一个选项,比如“给这个应用程序打分,然后在应用程序中免费得到这样那样的东西”)。

我编写的类提供了三个按钮,并将对话框配置为只在应用程序启动n次后才显示(如果用户以前使用过应用程序,则对应用程序进行评级的几率更高。大多数用户甚至不太可能知道应用程序在第一次运行时做了什么):

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

集成类就像添加:

AppRater.app_launched(this);

你的活动。只需要添加到整个APP中的一个活动中即可。

 类似资料:
  • 我是一个初学者,我只是找不到一个可行的解决方案。 我想做的是:用户输入用户名和密码,然后应用程序登录到一个网站。如果登录失败,则返回false和正确消息,否则返回true并继续执行下一个活动(获取另一个站点,解析html并显示内容)。 我的难题是:如何检测成功登录? 这是我的密码 LoginActivity的相关代码: 身份验证类中的方法: 由于我获得了200(OK)状态,我认为POST的代码工作

  • 问题内容: 我尝试了许多方法来实现这一目标,但失败了。 我必须使用URL在facebook上共享信息,单击URL时,它将重定向到我的应用程序的特定页面。 它正在工作并成功共享该帖子。当我单击链接时,它正在重定向到应用程序,没有太多信息可以重定向到特定的ViewController。 第2步 在这里,我使用Open Graph发布并成功发布了信息。但是,单击链接时不要重定向到我的应用程序。 注意:

  • 问题内容: 在Android应用中实施应用内结算似乎非常复杂。我该怎么办?SDK中的示例应用程序只有一个Activity,对于像我这样的具有多个Activity的应用程序来说,这过于简化了。 问题答案: 好吧,我将尝试解释我的经历。我不认为自己是专家,但是几天我都伤透了脑筋。 对于初学者来说,我很难理解示例和应用程序的工作流程。我认为从一个简单的示例开始应该会更好,但是将代码分成几小段并且不知道是

  • 问题内容: 我需要用于区域名称的initcap功能。有什么办法可以在MySQL中实现呢? 非洲 印度次大陆 美国西海岸 欧洲/英国 这样结果可以吗?有什么建议么?提前致谢。 问题答案: 有时候我在MySQL中寻找内置的initcap / ucfirst函数,但不幸的是找不到这样的字符串函数,所以决定写我自己的..感谢MySQL社区成员纠正了我函数中的错误并将其发布回去。

  • 问题内容: 我想制作一个使用ReLU函数的简单神经网络。有人可以告诉我如何使用numpy实现该功能的线索。 问题答案: 有两种方法。 如果使用以下代码计时结果: 我们得到: 因此乘法似乎是最快的。

  • Android中有什么方式可以实现文档的查看、批注的功能? pdf我使用了mupdf实现查看和简单画笔的批注。其它doc、docx、xls等格式的文档使用第三方调用wps的方式打开没有问题,但是批注后保存根据广播得到的保存路径都是应用无法访问的,导致实现不了批注上传的功能,请问大家都是怎么去实现的? 调用wps打开文档文件的代码: