我尝试使用 ACRA 作为错误报告器,我将 acra-4.6.1.jar 添加到我的项目中并创建了此类
ReportApp.java
package org.qtproject.example.ourmessenger;
import org.acra.*;
import org.acra.annotation.*;
import org.qtproject.qt5.android.bindings.QtApplication;
import android.app.Application;
@ReportsCrashes(
formUri = "http://######/#####/######/####.php",
formUriBasicAuthLogin = "root",
formUriBasicAuthPassword = "#######",
mode = ReportingInteractionMode.TOAST,
forceCloseDialogAfterToast = false,
resToastText = R.string.crash_toast_text
)
public class ReportApp extends Application {
@Override
public void onCreate() {
super.onCreate();
ACRA.init(this);
}
}
然后,我在 AndroidManifest 上编辑了我的 android:name:
AndoridManifest.xml
<application android:hardwareAccelerated="true" android:name="org.qtproject.example.ourmessenger.ReportApp" android:label="@string/app_name" android:icon="@drawable/icon">
我还在 AndroidManifest.xml 的末尾添加了这一行 </manifest>
之前:
<CheckBoxPreference android:key="acra.enable" android:title="@string/pref_enable_acra" android:summaryOn="@string/pref_acra_enabled" android:summaryOff="@string/pref_acra_disabled" android:defaultValue="true"/>
我用这个
String i=null;
i.contains("kj");
用于测试 ACRA。事实上这是行不通的。我没有向 mainActivity 添加任何内容。
MainActivity.java
.
.
public class MainActivity extends QtActivity implements SensorEventListener
{
.
.
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Context context = getApplicationContext();
SharedPreferences appPref = getSharedPreferences("isFirstRun", 0);
boolean isFirstRun = appPref.getBoolean("isFirstRun", true);
.
.
}
.
.
}
它不仅不显示任何 TOAST 消息,而且也不向服务器报告。有什么建议吗?
最佳答案
您需要在 @ReportsCrashes 中提及您的目标服务的请求类型。对于您的 formUri = "http://######/######/######/####.php"
服务,本质上是 POST或 PUT 服务,在 @ReportsCrashes block 中添加 httpMethod = org.acra.sender.HttpSender.Method.POST
或 httpMethod = org.acra.sender.HttpSender.Method.PUT
。
请参阅doc了解更多详情。
关于java - Android - Acra 不报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33476633/