首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对活动实施acra?

如何对活动实施acra?
EN

Stack Overflow用户
提问于 2014-09-29 06:08:48
回答 3查看 852关注 0票数 2

如何在活动或其他方面实现acra错误报告?我知道必须在类上扩展应用程序,但是是否可以将acra添加到活动中呢?

我得到了以下错误

不能转换为android.app.application

这是我的密码

代码语言:javascript
复制
@ReportsCrashes(
    formUri = "http://test.com/cekErr",

            formUriBasicAuthLogin = "GENERATED_USERNAME_WITH_WRITE_PERMISSIONS",
            formUriBasicAuthPassword = "GENERATED_PASSWORD",
    formKey = "",
    customReportContent = {
            ReportField.APP_VERSION_CODE,
            ReportField.APP_VERSION_NAME,
            ReportField.ANDROID_VERSION,
            ReportField.PACKAGE_NAME,
            ReportField.REPORT_ID,
            ReportField.BUILD,
            ReportField.STACK_TRACE
    },
    resToastText = R.string.app_name
)

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ACRAConfiguration config = ACRA.getNewDefaultConfig(this.getApplication()); 
    config.setResToastText(R.string.app_name);
    ACRA.setConfig(config);

    ACRA.init(this.getApplication());
    Map<ReportField, String> mapping = new HashMap<ReportField, String>();
    mapping.put(ReportField.APP_VERSION_CODE, "myAppVerCode");
    mapping.put(ReportField.APP_VERSION_NAME, "myAppVerName");
    mapping.put(ReportField.LOGCAT, "myAppErr");
    // ...
    mapping.put(ReportField.USER_EMAIL, "userEmail");
    // remove any default report sender
    ACRA.getErrorReporter().removeAllReportSenders();
    // create your own instance with your specific mapping
    ACRA.getErrorReporter().addReportSender(
            new HttpPostSender
            ("http://test.com/cekErr"
                    , mapping));
}
EN

回答 3

Stack Overflow用户

发布于 2014-09-29 13:47:09

您不需要将acra添加到需要配置到应用程序类级别的活动中。

MyApplication.java

代码语言:javascript
复制
import org.acra.*;
import org.acra.annotation.*;

@ReportsCrashes(
    formKey = "", // This is required for backward compatibility but not used
    formUri = "http://www.backendofyourchoice.com/reportpath"
)
public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        // The following line triggers the initialization of ACRA
        ACRA.init(this);
    }
}

应用程序

代码语言:javascript
复制
<application android:icon="@drawable/icon" android:label="@string/app_name"                   android:name="MyApplication">

帕米

代码语言:javascript
复制
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

遵循这个基本的设置

票数 3
EN

Stack Overflow用户

发布于 2014-09-29 13:35:23

不是的。ACRA被添加到整个应用程序中。如果您还没有一个Application类,只需创建一个从Application扩展而来的类。

票数 2
EN

Stack Overflow用户

发布于 2014-11-30 19:21:37

正如同事们已经告诉过您的,ACRA是添加到整个应用程序中的。所以,将ACRA添加到您的应用程序中,但是只在需要的活动中使用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26093490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档