android /data/system/dropbox,Android导出dropbox日志

文章内容已重新排版:Android导出dropbox日志,请到该链接浏览,谢谢支持。

大项目中出现anr几乎是必然事件,这里我就不再去赘述怎么分析anr日志了。但是作为分析anr重要依据的必然离不开dropbox日志。

问题来了,dropbox文件目录路径一般是/data/system/dropbox/,开发时我们当然能直接把日志拉出来。但是,外面用的正式版的机器我们是没有读取这个目录的权限的,即使你拥有系统权限也不行。所以想着怎么在程序中直接把dropbox日志直接输出来。

后来找到android了一个跟dropbox日志紧密联系的类:DropboxManager.

DropboxManager中文介绍可以参考这篇博客:DropboxManager介绍

第一步:获取DropboxManager

api英文原文是:You can obtain an instance of this class by calling {@link android.content.Context#getSystemService} with {@link android.content.Context#DROPBOX_SERVICE}.代码:

```

DropboxManager dropboxManager = (DropboxManager ) mContext.getSystemService(Context.DROPBOX_SERVICE);

```

第二步:获取dropbox信息

DropboxManager中有一个类Entry,该Entry在api中的定义是:A single entry retrieved from the drop box. 通过这个Entry我们就可以获取到dropbox的日志信息(嘿嘿,开心)。

其实说明白点就是:每个Entry对应的就是一个tag的系统日志(上面推荐博客中介绍到的tag,如crash,anr,strict_mode等等)。既然重点都在这个Entry上,那我们来理一理它。首先看他的参数。

db6e949c2af2

其中我们要用到的就是前面三个:mTag对应的就是我们上说的系统日志的tag;mTimeMillis对应的是Entry创建的时间,这个我们后面会用到,必要参数;mData中包含的就是我们要的数据了。

那么我们怎么获取Entry呢?不急,DropboxManager中给你提供了方法:getNextEntry(String tag, long msec)。其中tag上面说的很详细了,传null代表所有tag;msec代表系统这个时间点后创建的Entry。所以这个方法获取到的就是指定tag、指定时间点后创建的第一个Entry。

好了,Entry我们已经获取到了,接下来说说怎么从Entry获取我们需要的日志信息。Entry类中有一个方法是String getText(int maxBytes),直接返回的就是String,深得我心啊。就是说你直接就可以获取到对应entry中的日志信息了。具体是怎么实现的我就不说了,去看api,很简单。

接下来你只需要对这个String进行操作就行了,可以写到本地文件中,也可以打印到普通日志中。看你喜欢。下面贴一下我的完整代码

```

import android.content.Context;

import android.os.DropBoxManager;

import android.os.Environment;

import android.util.Log;

import java.io.IOException;

public class DropboxOutputManager {

private static final StringTAG ="DropboxPrintManager";

private static final int MAX_BYTES =8192 *100;

// DropBoxManager 是 Android 在 Froyo(API level 8) 引入的用来持续化存储系统数据的机制,

// 主要用于记录 Android 运行过程中, 内核, 系统进程, 用户进程等出现严重问题时的 log,

// 可以认为这是一个可持续存储的系统级别的 logcat.

private DropBoxManagerdropBoxManager;

/**

* [dropbox文件生成路径]

*/

private StringoutputPath = Environment.getExternalStorageDirectory().getPath() +"/log/dropbox.log";

private static DropboxOutputManagersInstance;

private DropboxOutputManager() {

//通过用参数 DROPBOX_SERVICE 调用 getSystemService(String) 来获得这个服务

dropBoxManager = (DropBoxManager) mContext.getSystemService(Context.DROPBOX_SERVICE);

}

public static DropboxOutputManagergetInstance() {

if (sInstance ==null) {

synchronized (DropboxOutputManager.class) {

if (sInstance ==null) {

sInstance =new DropboxOutputManager();

}

}

}

return sInstance;

}

/**

* 打印日志信息

*/

public boolean printDropboxLog()throws IOException {

// 我们要输出所有的dropbox信息,所以时间点从0开始

long time =0;

String text ="";

DropBoxManager.Entry entry;

while ((entry = getEntry(time)) !=null) {

//这里给它加个标签

text = entry.getTag() +"  " + entry.getText(MAX_BYTES) +"\r\n";

time = entry.getTimeMillis();

//直接打印出来,当然你可以在这里把text写到文件中去

Log.d("whh", text);

// 这里一定要记得关闭

if (entry !=null) {

entry.close();

}

}

return true;

}

/**

* 获取指定时间点后的第一个entry,不指定tag

*/

private DropBoxManager.EntrygetEntry(long time) {

// 需要在AndroidManifest中增加android.permission.READ_LOGS权限

DropBoxManager.Entry entry =dropBoxManager.getNextEntry(null, time);

return entry;

}

}

```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528814.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android蓝牙串口 hc06,Android手机通过蓝牙模块HC-06连接Arduino串口输出

通过手机进行通信是可以实现很多遥控功能,虽然距离是比较短,一般是10米,但对于我这种新手做测试,比起买一个几百块的多通道遥控器成本要低很多。实验目的:用Android实现蓝牙连接通过Arduino串口输出信息这次使用的是蓝…

esrgan_港中文-商汤联合实验室:ECCV2018 PIRM-SR 超分辨率比赛冠军:ESRGAN(已开源)...

Summary:中科院和京东AI研究院提出:改进SRN人脸检测算法,目前业界最强!Author:AmusiDate:2019-02-09微信公众号:CVer原文链接:香港中文大学-商汤联合实验室:ECCV2018 PIR…

android中如何新建一个activity,《Android Activity》活动的介绍和创建

Activity 是什么Android 有四大组件:Activity、Service、Broadcast Receiver 和 Content Provider。Activity,活动,即用来承载用户界面的容器,Android 四大组件之一。我们在 APP 里面看到的页面就需要一个 Activity,页…

android qq红点,Android高仿QQ小红点功能

先给大家展示下效果图:绘制贝塞尔曲线:主要是当在一定范围内拖拽时算出固定圆和拖拽圆的外切直线以及对应的切点,就可以通过path.quadTo()来绘制二阶贝塞尔曲线了~整体思路:1、当小红点静止时,什么都不做,只…

android1.6,令人遗憾的Android 1.6系统_戴尔 Mini5(Streak)_手机其它OS-中关村在线

令人遗憾的Android 1.6系统虽然Dell Streak上周五刚刚在美国地区上市,但实际上这款产品的开发时间已经很长了。早在去年Dell的Mini 3i上市之前这款被称之为Dell Mini 5的产品就已经出现在大家的视野之中,而当时其搭载的就是在当时看来还是十分先进的Andr…

android 控制word,Android使用POI进行Word操作(一)

操作步骤步骤一:引用相关POI库步骤二:创建POI中的word文件对象步骤三:调用word文件对象的方法对文件进行操作步骤一:引用相关的POI库吐槽一下,这一步是最坑的本人尝试了很多版本组合,最新的版本提示class重…

android car bt模块,大谷蓝牙小车BT Car/Android Car手机控制 重力控制小车 安卓操控小车...

产品介绍:Android蓝牙遥控小车平台。是通过Android手机以蓝牙方式操控小车前进后退左转右转等,具有重力感应操控、触摸屏虚拟操控、虚拟摇杆三种控制模式。并且还具有呼吸灯、电源指示灯、蓝牙连接指示灯、速度等级指示灯等状态指示。小车自带锂电池及US…

Dijkstra(迪杰斯特拉)算法总结

知识概览 Dijkstra算法适用于解决所有边权都是正数的最短路问题。Dijkstra算法分为朴素的Dijkstra算法和堆优化版的Dijkstra算法。朴素的Dijkstra算法时间复杂度为,适用于稠密图。堆优化版的Dijkstra算法时间复杂度为,适用于稀疏图。稠密图的边数m和是一…

html表格中怎么将背景颜色虚化,如何在Photoshop中制作效果惊艳模糊背景!

把背景模糊一下,有时,效果会令人非常惊艳,但是,你知道如何在Photoshop中模糊背景吗? 在今天的教程中,我们将告诉大家,如何使背景模糊,而又不会使我们的主体周围出现光晕。在这个过程…

axure html 360安装扩展,小编搞定win7系统360浏览器添加Axure扩展的设置方案

经常使用电脑的朋友会发现win7系统360浏览器添加Axure扩展的问题比较常见,如今就有用户反映在使用电脑的时候遇到win7系统360浏览器添加Axure扩展的情况不知怎么解决,于是我就给大家整理总结了win7系统360浏览器添加Axure扩展的具体处理方案,…

前锋html5费用,足坛转会费最高的5位前锋,1.05亿欧元仅第5,第1比C罗还高1.22亿...

原标题:足坛转会费最高的5位前锋,1.05亿欧元仅第5,第1比C罗还高1.22亿大家都知道,前锋对于比赛的胜负非常重要,再加上其关注度比其他位置高,商业价值比较高,所以通常来说,他们的转会…

学计算机高中要买电脑,大一新生,打着学习的“口号”要求买电脑,父母到底该不该答应?...

原标题:大一新生,打着学习的“口号”要求买电脑,父母到底该不该答应?马上就进入9月份了,全国各大高校也都陆续开学。对于刚刚考上大学的大一新生来说,学校的一切都是很新鲜的,而且他们也不用像在…

计算机科学人生观和价值观,浅谈我的人生观和价值观

浅谈我的人生观和价值观2013-04-22 13:58:30 来源:http://www.51cok.com/ 点击:176次分享到:人们经常说态度决定一切,这就是指的人们的人生观和价值观。我们在高中学习政治哲学时开始真正地从理论上学习这一对词语,也是从…

添加include文件路径_-isystem以及include_next的副作用

首先我们先来看下include_next的用法比如我们想include , 在cmath头文件中你可以看到有类似include_next 的语法,他跟传统的include不同,他不会从你的search path list的头部开始查找,他会跳出当前路径从下一个entry进行查找,比如…

java防止上传恶意文件_从补丁分析到在野利用:揭秘CVE20201464 Windows文件签名验证绕过漏洞疑云...

背景2020年8月12日,微软发布了8月份的漏洞风险通告。通告中一个显示已被公开披露和在野利用的漏洞进入了我们的视野。该漏洞编号为CVE-2020-1464,其被描述为Windows验证文件数字签名时存在一个欺骗漏洞,攻击者若成功利用此漏洞可以绕过Window…

特殊教育学校计算机教学计划,2021年特殊教育学校教学计划

2021年特殊教育学校教学计划时间真是转瞬即逝,我们又将在努力中收获成长,现在就让我们好好地规划一下吧。那么教学计划怎么写才能体现你的真正价值呢?下面是小编精心整理的2021年特殊教育学校教学计划,希望能够帮助到大家。特殊教…

android 双层饼图_python:给表格加上双层饼图,让同事的图表黯然失色

大家好!今天来分享一下如何用python给表格加上双层饼图,让同事的图表黯然失色,如下图所示。案例中数据表格结构如下:代码及演示:import pyecharts.options as opts from pyecharts.charts import Pie import numpy as …

计算机一级电子表格插入表格,计算机一级电子表格

电子表格一、(1)在考生文件夹下打开EXC.XLSX文件:①将sheet1工作表的A1:E1单元格合并为一个单元格,水平对齐方式设置为居中;计算各单位三种奖项的合计,将工作表命名为"各单位获奖情况表"。②选取"各单位…

18年高考云南628分想学计算机,2018山东高考投档线公布!山大文624理628…快查查你学校多少分进档...

原标题:2018山东高考投档线公布!山大文624理628…快查查你学校多少分进档考生注意!↓↓↓山东省2018年普通高校招生文理类本科普通批、春季高考本科、艺术类本科校考批首次志愿于7月19日投档!具体来看,文理类本科普通批…

android fragment中引入自定义view_厉害了,用Android自定义View实现八大行星绕太阳3D旋转效果...

作者:史蒂芬诺夫斯基链接:https://www.jianshu.com/p/2954f2ef8ea5好久没写View了,最近恰巧遇到一个八大行星绕太阳旋转的假3D效果,写完之后感觉效果还不错。能玩十分钟的那种。本篇将一步步带您实现这样的一个效果,ps…