Android logcat: Send log entries from device using email

倾然丶 夕夏残阳落幕 提交于 2019-11-30 10:59:42

问题


Scenario

I have released a beta version of an Android app to a few friends. Now, I would like to fix some bugs that came up during the test period.

I have set a third-party crash reports utility, so I can easily handle app crashes. However, there are some erroneous behaviours which are not causing crashes. In these cases, I would like to inspect the app logs and see what went wrong.

Is there a way for the app to send its logcat entries via email?

Clarifications

  • There are many logging apps (android-log-collector, Log Viewer (logcat)) which can inspect and show logcat entries. However, these apps can't access other apps' logs since Android 4.1.
  • I don't mind taking a lot of space in the device - this feature is for beta testers only.
  • The solution should work without root or any other special permissions.

回答1:


Call this method in onDestroy of your main activity.

 public void SendLogcatMail(){

    // save logcat in file
    File outputFile = new File(Environment.getExternalStorageDirectory(),
            "logcat.txt");
    try {
        Runtime.getRuntime().exec(
                "logcat -f " + outputFile.getAbsolutePath());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

 //send file using email
 Intent emailIntent = new Intent(Intent.ACTION_SEND);
 // Set type to "email"
 emailIntent.setType("vnd.android.cursor.dir/email");
 String to[] = {"yourmail@gmail.com"};
 emailIntent .putExtra(Intent.EXTRA_EMAIL, to);
 // the attachment
 emailIntent .putExtra(Intent.EXTRA_STREAM, outputFile.getAbsolutePath());
 // the mail subject
 emailIntent .putExtra(Intent.EXTRA_SUBJECT, "Subject");
 startActivity(Intent.createChooser(emailIntent , "Send email..."));
 }



回答2:


It sounds like RemoteLogger is exactly what you need

https://github.com/sschendel/RemoteLogger

Capture debug logging to a file that user can easily send to you via email. This was created out of necessity to troubleshoot a non-reproducible bug reported by a user. To be clear the logging was dropped into a version of app released to test users to troubleshoot. Removed in final production code.

Library provides hooks to start, stop, send, and delete log file.



来源:https://stackoverflow.com/questions/25765366/android-logcat-send-log-entries-from-device-using-email

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!