java - Android In-app Review 弹出窗口使应用程序崩溃
问题描述
尝试为 Android 实施应用内审查时,我运行测试 FakeReviewManager 没有问题,如下所述,但是当与真正的经理交换它时,我遇到了崩溃,因为窗口应该弹出。这是我的代码:
ReviewManager manager;
ReviewInfo reviewInfo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//manager = new FakeReviewManager(context);
manager = ReviewManagerFactory.create(this);
Task<ReviewInfo> request = manager.requestReviewFlow();
request.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
Log.d("myTag","Review can be requested");
ReviewInfo reviewInfo = task.getResult();
} else {
// There was some problem, continue regardless of the result.
}
});
}
public void ProgressManagement() {
Task<Void> flow = manager.launchReviewFlow(MainActivity.this, reviewInfo);
flow.addOnCompleteListener(task -> {
Log.d("myTag","Review process completed");
});
}
这是我得到的错误代码:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.android, PID: 16579
java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.PendingIntent com.google.android.play.core.review.ReviewInfo.a()' on a null object reference
at com.google.android.play.core.review.c.launchReviewFlow(Unknown Source:7)
at com.android.MainActivity.ProgressManagement(MainActivity.java:280)
at com.android.MainActivity$4.onClick(MainActivity.java:209)
at android.view.View.performClick(View.java:6897)
at android.view.View$PerformClick.run(View.java:26104)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
解决方案
试试这个:
添加以下内容
private ReviewInfo reviewInfo;
以下
ReviewManager manager;
然后改变这个:
if (task.isSuccessful()) {
Log.d("myTag","Review can be requested");
ReviewInfo reviewInfo = task.getResult();
}
对此:
if (task.isSuccessful()) {
Log.d("myTag","Review can be requested");
reviewInfo = task.getResult();
}