其他分享
首页 > 其他分享> > android-是否有可能在单击按钮时获得logcat的最后几行?

android-是否有可能在单击按钮时获得logcat的最后几行?

作者:互联网

我试图在按钮上单击以获取Logcat(至少最后几行),但没有任何反应-

view.findViewById(R.id.logdone).setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // Make file name.
        String fullName = "userlogs";

        // Extract to file.
        File file = new File(fullName);
        InputStreamReader reader = null;
        FileWriter writer = null;
        try
        {
          // get input stream
          String cmd = "logcat -d -v time";
          Process process = Runtime.getRuntime().exec(cmd);
          reader = new InputStreamReader (process.getInputStream());

          // write output stream
          writer = new FileWriter (file);
          char[] buffer = new char[10000];
          do 
          {
            int n = reader.read (buffer, 0, buffer.length);
            if (n == -1)
                break;
            writer.write (buffer, 0, n);
          } while (true);

          reader.close();
          writer.close();
        }
        catch (IOException e)
        {
          if (writer != null)
              try {
                writer.close();
            } catch (IOException e1) {
            }
          if (reader != null)
              try {
                reader.close();
            } catch (IOException e1) {
            }
          e.printStackTrace();
          return;
        }
      }
   }

注意:

我确实有权限-

<uses-permission android:name="android.permission.READ_LOGS" />

更新:

我大部分的内容在Log.d()中,然后是Log.v()中,然后是Log.e()中,然后是Log.i()中.但是如何单击按钮才能获得最后的事件行.我的目的是获取这些行并将其通过电子邮件发送给开发人员.

我正在使用流行的第三方API(称为ACRA)来发送正常运行的电子邮件.
我可以使用StringBuilder将所有设备日志都放入其中,然后通过电子邮件发送.
但我无法得到.

有没有任何有效的优雅方法?

解决方法:

鉴于我对不再授予非系统应用程序的READ_LOGS权限的评论,我建议使用带有标准Java LoggerMemoryHandler.单击按钮,您可以将消息push发送到目标StreamHandler(您可以只是将它们转储到您选择的输出缓冲区中).

标签:android-logcat,android
来源: https://codeday.me/bug/20191121/2055322.html