您可以尝试使用
AppRatingDialog.Builder
类的
setRateButtonText
、
setRateLaterButtonText
或
setNeverRateButtonText
方法添加一个
OnRatingDialogListener
:
final AppRatingDialog appRatingDialog = new AppRatingDialog.Builder(this)
.setRateButtonText("Rate App", new OnRatingDialogListener() {
@Override
public void onClick() {
goToPickerActivity();
}
})
.setRateLaterButtonText("Rate App Later", new OnRatingDialogListener() {
@Override
public void onClick() {
goToPickerActivity();
}
})
.setNeverRateButtonText("Never", new OnRatingDialogListener() {
@Override
public void onClick() {
goToPickerActivity();
}
})
.build();
appRatingDialog.show();
使用lambda表达式,代码将如下所示:
final AppRatingDialog appRatingDialog = new AppRatingDialog.Builder(this)
.setRateButtonText("Rate App", () -> goToPickerActivity())
.setRateLaterButtonText("Rate App Later", () -> goToPickerActivity())
.setNeverRateButtonText("Never", () -> goToPickerActivity())
.build();
appRatingDialog.show();
编辑 1:
方法 openPlayStore
:
private void openPlayStore() {
final String storeLink = "market://details?id=" + context.getPackageName();
final Uri marketUri = Uri.parse(storeLink);
try {
mContext.startActivity(new Intent(Intent.ACTION_VIEW, marketUri));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(mContext, "Couldn't find PlayStore on this device", Toast.LENGTH_SHORT).show();
}
}
如果您可以编辑库,请尝试将
openPlayStore
方法更改为
public
,将
AppRatingDialog
实例的引用保存到某个变量中,例如
appRatingDialog
,然后调用
appRatingDialog.openPlayStore()
。
编辑2:
为了拥有不同的按钮监听器,我们需要向
AppRatingDialog
添加新的监听器并处理它们:
public class AppRatingDialog extends AppCompatDialog implements View.OnClickListener {
private OnRatingDialogListener onRatingDialogListener;
private OnRatingDialogListener onRateLaterDialogListener;
private OnRatingDialogListener onRateNeverDialogListener;
@Override
public void onClick(View v) {
if (v.getId() == R.id.dialog_rating_button_never_rate) {
savedNeverShow();
dismiss();
if (onRateNeverDialogListener != null) {
onRateNeverDialogListener.onClick();
}
} else if (v.getId() == R.id.dialog_rating_button_rate_later) {
dismiss();
incrementLaunchCount(true);
if (onRateLaterDialogListener != null) {
onRateLaterDialogListener.onClick();
}
} else if (v.getId() == R.id.dialog_rating_button_rate) {
savedNeverShow();
dismiss();
if (onRatingDialogListener != null) {
onRatingDialogListener.onClick();
} else {
openPlayStore();
}
}
}
public static class Builder {
@NonNull
public Builder setRateLaterButtonText(String rateLaterButtonText, @Nullable OnRatingDialogListener onRateLaterClickListener) {
appRatingDialog.mRateLaterButtonText = rateLaterButtonText;
appRatingDialog.onRateLaterDialogListener = onRateLaterClickListener;
return this;
}
@NonNull
public Builder setNeverRateButtonText(String neverRateButtonText, @Nullable OnRatingDialogListener onNeverRateClickListener) {
appRatingDialog.mNeverRateButtonText = neverRateButtonText;
appRatingDialog.onRateNeverDialogListener = onNeverRateClickListener;
return this;
}
}
}
编辑3:
同时打开Play Store并通知监听器:
public class AppRatingDialog extends AppCompatDialog implements View.OnClickListener {
private OnRatingDialogListener onRatingDialogListener;
private OnRatingDialogListener onRateLaterDialogListener;
private OnRatingDialogListener onRateNeverDialogListener;
@Override
public void onClick(View v) {
if (v.getId() == R.id.dialog_rating_button_never_rate) {
savedNeverShow();
dismiss();
if (onRateNeverDialogListener != null) {
onRateNeverDialogListener.onClick();
}
} else if (v.getId() == R.id.dialog_rating_button_rate_later) {
dismiss();
incrementLaunchCount(true);
if (onRateLaterDialogListener != null) {
onRateLaterDialogListener.onClick();
}
} else if (v.getId() == R.id.dialog_rating_button_rate) {
savedNeverShow();
dismiss();
openPlayStore();
if (onRatingDialogListener != null) {
onRatingDialogListener.onClick();
}
}
}
}