ACRA不会使用HttpSender发送报告崩溃

时间:2018-01-09 17:13:12

标签: android acra

我按照英亩文档中的说明安装了Acre扩展。 并添加了@AcraHttpSender解剖结构,表明了网站和发送方法。 但是当我抛出异常或使用以下命令ACRA.getErrorReporter().handleException(new Exception("123"));时,服务器没有任何反应。 虽然我有权在清单中访问网络,但Internet始终处于开启状态。

为什么不发送?

有一种方法可以在一段时间后使用该服务手动发送累积报告吗?

2 个答案:

答案 0 :(得分:1)

我错了,我检查了$_POST数组中的数据,这会产生否定结果且日志没有写入,你应该直接使用输入流读取file_get_contents('php://input');

该问题可以被视为已关闭,谢谢大家,ACRA日志有助于查看数据未写入服务器。

答案 1 :(得分:0)

我有完全一样的问题。如果可以帮助其他人,这是我的 MyApplication.java

@AcraCore(
        buildConfigClass = BuildConfig.class,
        reportFormat = StringFormat.JSON
)
@AcraHttpSender(
        uri = "https://example.org/my_acra_script.php",
        httpMethod = HttpSender.Method.POST
)
public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

    }

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);

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

}

...只需更改uri的值即可。

这是 my_acra_script.php

<?php

$NEW_LINE = "\r\n";

$from = "server@example.org";
$to = "you@example.org";
$subject = "Android Crash Report";

$headers  = "From: $from" . $NEW_LINE;
$headers .= 'MIME-Version: 1.0' . $NEW_LINE;
$headers .= 'Content-type: text/html; charset=utf-8' . $NEW_LINE;

$message  = "<html>";
$message .= "    <head>";
$message .= "        <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />";
$message .= "        <title>$subject</title>";
$message .= "    </head>";
$message .= "    <body>";
$message .= "        <p>";

$post_data = file_get_contents('php://input');

if (empty($post_data)) {
    $message .= "No data received.";
}
else {
    $error_data = json_decode($post_data, true);

    foreach ($error_data as $key => $value) {
        $message .= "<br /><b>" . nl2br(htmlspecialchars($key)) . ":</b><br />" . nl2br(htmlspecialchars($value)) . "<br />" . $NEW_LINE;
    }
}
$message .= "        </p>";
$message .= "    </body>";
$message .= "</html>";

$result = mail($to, $subject, $message, $headers);
if ($result === TRUE) {
    echo "OK";
}
else {
    error_log("ACRA email not sent.");
}

?>

...只需更改$from$to的值即可。