Android Studio中实现成功提交应用内评价后隐藏评价按钮
解决应用内评价按钮提交后仍显示的问题
首先要明确:Google的In-App Review API出于隐私保护,不会返回用户是否实际提交了评价的结果,OnCompleteListener仅表示评价流程已结束(不管用户是提交、取消还是直接关闭弹窗)。所以我们只能通过标记用户已触发过评价流程,来实现按钮隐藏的需求。
具体实现步骤:
- 用SharedPreferences存储标记:记录用户是否已经完成过评价流程
- 流程结束后设置标记:在评价流程完成的回调里标记状态
- 页面初始化时检查标记:根据标记决定是否显示评价按钮
修改后的代码示例:
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
相关产品推荐
相关产品推荐

