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

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

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

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

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

  • genymotion power_supply错误
  • 缺少蓝牙权限 - 但我的应用程序不使用它
  • 在设备上使用ACRA的Logcat空
  • 如何在Eclipse LogCat查看器中过滤掉标记名
  • 禁用Logcat(DDMS)和运行控制台自动打开任何活动
  • 如何在特定模块的logcat中获取Verbose日志记录
  • Logcat消息在短时间后消失
  • 为什么MediaPlayer在创build它的实例时抛出不存在错误?
  • 阅读您发布的链接 – 在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 。