我可以从我的应用程序触发Android内置的错误捕获function吗?

Android从ICS开始(我认为)为用户提供了捕获系统状态的能力,然后将捕获的数据发送或共享给任何他们想要的人。 请参阅在android平板电脑中捕获的错误报告是什么意思?

捕获的数据包括屏幕截图,正在运行的进程列表,Logcat内容,每个进程的活动线程等。

这非常有用,但触发它似乎涉及用户按有趣的组合键(Power + VolumeUp + VolumeDown)或启用开发人员模式,并从那里select特定的选项( 采取错误报告电源菜单错误报告 )。

有没有一种方法可以从我自己的代码中触发这个function,以便我可以为用户提供简单的菜单选项来捕获错误报告?

Solutions Collecting From Web of "我可以从我的应用程序触发Android内置的错误捕获function吗?"

阅读您发布的链接 – 在android平板电脑中捕获的错误报告意味着什么?

标记为“正确”的[answer]表示system/bin中的bugmailer.sh进行报告。

所以,理论上,如果使用这些方法中的任何一种都可以检测到应用程序崩溃,那么您可以在SD卡上执行自己的bugmailer.sh副本并获取报告。

bugmailer.shbugmailer.sh : https : bugmailer.sh

但是,您将会意识到,在阅读源代码时,这显然只适用于固定电话。

更简单的方法是打开Developer options并有一个系统覆盖窗口指向他们应该点击什么。 这将是非固定电话唯一的用户友好的解决scheme。

您可以使用打开Developer options

 startActivity(new Intent( Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS)); 

作进一步参考 。

希望有所帮助。

我find了一个方法,但它需要根。

缺陷报告的负责人是dumpstate.c 。

用法:dumpstate [-b soundfile] [-e soundfile] [-o file [-d] [-p] [-z]] [-s] [-q]
-o:写入文件(而不是stdout)
-d:将date附加到文件名(要求-o)
-z:gzip输出(需要-o)-p:截图到filename.png(需要-o)
-s:将输出写入控制套接字(对于init)
-b:在工作开始时播放声音文件而不是振动
-e:在工作结束时播放声音文件而不是振动
-q:禁用振动
-B:完成时发送广播(需要-o和-p)

如果使用-B参数调用dumpstate ,那么BugreportReceiver会处理警告用户并共享结果,然后广播"android.intent.action.BUGREPORT_FINISHED"

我没有尝试,但是,每个有root权限的人都可以调用dumpstate

 dumpstate -o dump -p -B 

触发它。

据我所知,用户可以select向Google play报告崩溃。

有些网站提供了这个function,例如https://www.bugsense.com/可以很容易地集成,并提供了graddle/maven支持。 通过使用这样的网站,您尽可能与他们分享您的数据。 这将是你必须做的交易。

有没有一种方法可以从我自己的代码中触发这个function,以便我可以为用户提供简单的菜单选项来捕获错误报告?

有一个名为ACRA (Android的应用程序崩溃报告)的库 ,它允许您从您自己的代码发送崩溃报告到任何目的地。 开发人员可configuration的用户交互,如静默报告,吐司通知,状态栏通知+对话框或直接对话框可用。

您可以将自己的日志文件提取以及logcat,eventlog或radiolog添加到报告。 这是一个非常有用的工具,用于开发人员的崩溃数据分析和报告pipe理。

另请参阅BasicSetup和AdvancedUsage 。