You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中实现成功提交应用内评价后隐藏评价按钮

解决应用内评价按钮提交后仍显示的问题

首先要明确:Google的In-App Review API出于隐私保护,不会返回用户是否实际提交了评价的结果,OnCompleteListener仅表示评价流程已结束(不管用户是提交、取消还是直接关闭弹窗)。所以我们只能通过标记用户已触发过评价流程,来实现按钮隐藏的需求。

具体实现步骤:

  1. 用SharedPreferences存储标记:记录用户是否已经完成过评价流程
  2. 流程结束后设置标记:在评价流程完成的回调里标记状态
  3. 页面初始化时检查标记:根据标记决定是否显示评价按钮

修改后的代码示例:

1. 修改startReviewFlow方法,添加标记存储逻辑

void startReviewFlow() {
    if(reviewInfo != null) {
        Task<Void> flow = manager.launchReviewFlow(this, reviewInfo);
        flow.addOnCompleteListener(task -> {
            Toast.makeText(this, "¡Gracias, review completada!", Toast.LENGTH_SHORT).show();
            
            // 存储用户已完成评价流程的标记
            SharedPreferences prefs = getSharedPreferences("AppReviewPrefs", MODE_PRIVATE);
            prefs.edit().putBoolean("hasCompletedReview", true).apply();
            
            // 立即隐藏按钮
            yourReviewButton.setVisibility(View.GONE);
        });
    }
}

2. 在页面初始化(比如onCreate)中检查标记,控制按钮显示

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    
    yourReviewButton = findViewById(R.id.your_review_button);
    
    // 检查是否已完成过评价流程
    SharedPreferences prefs = getSharedPreferences("AppReviewPrefs", MODE_PRIVATE);
    boolean hasCompleted = prefs.getBoolean("hasCompletedReview", false);
    
    if(hasCompleted) {
        yourReviewButton.setVisibility(View.GONE);
    } else {
        yourReviewButton.setVisibility(View.VISIBLE);
        // 设置按钮点击事件启动评价流程
        yourReviewButton.setOnClickListener(v -> startReviewFlow());
    }
}

注意事项:

  • 如果你希望用户在一段时间后能再次看到评价按钮,可以改用存储时间戳的方式,比如记录上次触发流程的时间,当间隔超过设定时长(比如30天)后再显示按钮。
  • 确保yourReviewButton是你布局中评价按钮的实例,替换成你实际的变量名和ID。

内容的提问来源于stack exchange,提问作者Kevin Soto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 06:40:26