我试图使用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;
}
当此异常发生时,我看到祝酒词,然后应用程序崩溃,但我的收件箱中没有看到任何电子邮件。
删除formUri = ""
,然后重试
如果您通过formUri
和mailTo
,它将首先尝试通过HTTP将其发送到端点""
,并在没有互联网权限的情况下使用mailTo
作为回退,但您确实有权限,因此它只尝试将其发送到""
,并且不会尝试发送它。
首先,删除formUri。当你使用mailTo除了formUri,它发送电子邮件,如果没有互联网在崩溃的时候。
更进一步,这个权限:
<uses-permission android:name="android.permission.READ_LOGS"/>
仅适用于某些应用程序,我认为您必须申请才能使用它。在较新的Android版本中,你不再需要这个权限。