我按照英亩文档中的说明安装了Acre扩展。
并添加了@AcraHttpSender
解剖结构,表明了网站和发送方法。
但是当我抛出异常或使用以下命令ACRA.getErrorReporter().handleException(new Exception("123"));
时,服务器没有任何反应。
虽然我有权在清单中访问网络,但Internet始终处于开启状态。
为什么不发送?
有一种方法可以在一段时间后使用该服务手动发送累积报告吗?
答案 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
的值即可。