我在这里问了一个关于允许用户在崩溃时添加自定义注释的问题,并得到了ACRA 4.6包含一种机制的提示。我找不到任何有关如何使用它的文档或示例,所以我试图自己弄清楚,但我没有成功获得我想要的行为。例如,我尝试将其添加到注释中:
reportDialogClass = CustomReportDialog.class
这就是我写的只是为了看看我是否可以显示一个对话框:
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import org.acra.BaseCrashReportDialog;
public class CustomReportDialog extends BaseCrashReportDialog {
@Override
protected void onCreate(Bundle savedInstanceState) {
new AlertDialog.Builder(getApplicationContext()).setMessage("yo").setPositiveButton("pos", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).create().show();
}
}
一般来说,BaseCrashReportDialog.class对我来说似乎有点令人困惑,因为我本来希望它能为弹出对话框提供某种框架,但它只是从活动扩展而来,因此我试图显示我自己的AlertDialog。有没有人想出如何正确实现这个新功能?谢谢
根据威廉的要求编辑:
@ReportsCrashes(
formUri = BuildConfig.SERVER_DOMAIN,
mode = ReportingInteractionMode.TOAST,
resToastText = R.string.crash_toast_text,
disableSSLCertValidation = true,
additionalSharedPreferences = {BuildConfig.APPLICATION_ID},
excludeMatchingSharedPreferencesKeys = {CommonUtils.PROPERTY_REG_ID, CommonUtils.PREFS_SESSION_TOKEN},
reportDialogClass = CustomReportDialog.class
)
请注意 BaseCrashReportDialog 中的注释,其中显示"[子类] 必须在方法开头调用 super.onCreate()。你需要这样做。
您还应该在onClick
中执行某些操作,例如呼叫BaseCrashReportDialog.sendCrash()
看看CrashReportDialog.java作为一个起点。
您还需要配置mode = ReportingInteractionMode.DIALOG