Android从ICS开始(我认为)为用户提供了捕获系统状态的能力,然后向他们希望的任何人发送或共享捕获的数据。见What does it mean with bug report captured in android tablet?
捕获的数据包括屏幕截图,正在运行的进程列表,Logcat内容,每个进程的活动线程等。
这非常有用,但触发它似乎涉及用户按下有趣的组合键(Power + VolumeUp + VolumeDown)或启用开发者模式并从那里选择特定选项(获取错误报告,< strong>电源菜单错误报告)。
有没有办法可以从我自己的代码中触发这个,这样我就可以为用户提供一个简单的菜单选项来捕获错误报告?
答案 0 :(得分:1)
阅读您发布的链接 - What does it mean with bug report captured in android tablet?
标记为正确的[答案]表示bugmailer.sh
中的system/bin
会报告。
因此,从理论上讲,如果您使用these methods中的任何一个检测到应用程序崩溃,那么您可以在SD卡中执行自己的bugmailer.sh
副本并获取报告。
bugmailer.sh
的来源:https://android.googlesource.com/platform/system/extras/+/android-4.2.2_r1/bugmailer/bugmailer.sh
但是,您会发现,当您阅读源代码时,这显然只适用于有根电话。
更简单的方法是打开Developer options
并让系统覆盖窗口指向他们应该点击的内容。这将是非root用户手机唯一的用户友好解决方案。
您可以使用
打开Developer options
startActivity(new Intent(
Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS));
进一步reference。
答案 1 :(得分:0)
我找到了一种方法,但它需要root。
错误报告的责任在于dumpstate.c。
用法:dumpstate [-b soundfile] [-e soundfile] [-o file [-d] [-p] [-z]] [-s] [-q]
-o:写入文件(而不是stdout)
-d:将日期附加到文件名(需要-o)
-z:gzip输出(需要-o) -p:捕获截图到filename.png(需要-o)
-s:将输出写入控制套接字(用于init)
-b:在作业开始时播放声音文件而不是振动 -e:在作业结束时播放声音文件而不是振动 -q:禁用振动
-B:完成后发送广播(需要-o和-p)
如果使用 dumpstate
参数调用-B
,则会在BugreportReceiver处理后警告用户并共享结果后广播"android.intent.action.BUGREPORT_FINISHED"
。
我没有尝试过,但是拥有root权限的每个人都可以调用dumpstate
dumpstate -o dump -p -B
触发它。
答案 2 :(得分:0)
据我所知,用户可以选择向Google Play报告崩溃。
有些网站提供此功能,例如,https://www.bugsense.com/可以轻松集成,还提供graddle/maven
支持。通过使用这些网站,您最有可能与他们共享数据。这将是你必须做的交易。
答案 3 :(得分:0)
有没有办法可以从我自己的代码中触发这个,所以我可以 为我的用户提供一个简单的菜单选项来捕获错误报告?
有一个名为ACRA (Application Crash Reports for Android )的库,它允许您从自己的代码向任何目的地发送崩溃报告。可以使用开发人员可配置的用户交互,例如静默报告,Toast通知,状态栏通知+对话框或直接对话。
您可以将自己的日志文件提取以及logcat,eventlog或radiolog添加到报告中。对于开发人员来说,它是一个非常有用的崩溃数据分析和报告管理工具。