我正在尝试使用ACRA在我的应用中报告未处理的异常。
给予许可:
<uses-permission android:name="android.permission.READ_LOGS"/>
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:name=".MyApplication">
的gradle:
compile 'ch.acra:acra:4.9.0'
扩展应用程序类
package online.hannuveda.transafe_rx;
import org.acra.*;
import org.acra.annotation.*;
import android.support.multidex.MultiDexApplication;
@ReportsCrashes(formUri = "",
mailTo = "akshaycjoshi@gmail.com",
mode = ReportingInteractionMode.TOAST,
resToastText = R.string.crash_toast_text)
public class MyApplication extends MultiDexApplication
{
@Override
public void onCreate() {
super.onCreate();
ACRA.init(this);
}
}
在我的登录按钮中,我故意使用以下方法创建例外:
public void Login_Click(View v)
{
int i = 12/0;
}
当发生此异常时,我看到吐司,然后应用程序崩溃,但我的收件箱中没有看到任何电子邮件。知道什么是错的吗?
答案 0 :(得分:4)
删除formUri = ""
,然后重试。
如果同时传递了formUri
和mailTo
,它会首先尝试通过HTTP将其发送到端点""
,并使用mailTo
作为后备,以防万一没有互联网许可,但您拥有该权限,因此它只会尝试将其发送到""
,并且不会尝试将其邮寄。
答案 1 :(得分:1)
首先,删除formUri。当你使用mailTo以及formUri时,如果在崩溃时没有互联网,它会发送电子邮件。
此外,此权限:
<uses-permission android:name="android.permission.READ_LOGS"/>
仅适用于某些应用,我认为您必须申请使用它。在较新版本的Android上,您不再需要该权限。