Android Log工具之Luffy
Luffy
Luffy可以在手机端实时显示你App中的logcat输出。并且具有Log等级与Tag过滤功能。另外Luffy还支持收集Log,保存Log和查看本地log功能。
使用方法
1.Gradle中添加依赖
dependencies {
...
compile android studio :compile 'com.zql.android:luffy:1.1'
}
2.在manifest中添加如下内容:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.READ_LOGS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<activity android:name="com.zql.android.luffy.LuffyView" >
<intent-filter>
<category android:name="android.intent.category.DEFAULT"/>
<action android:name="android.intent.action.VIEW"/>
<data android:scheme="file"/>
<data android:scheme="content"/>
<data android:mimeType="text/plain"/>
</intent-filter>
</activity>
<service
android:name="com.zql.android.luffy.LuffyService"
android:enabled="true"
android:exported="false"
android:process=":remote">
</service>
3.如果设备是Android M或以上,请在MainActivity中添加如下内容用于进行权限申请(针对runtime permission):
public static final int OVERLAY_PERMISSION_REQ_CODE = 370 ;
public void requestPermission(){
// Here, this Activity is the current activity
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
Toast.makeText(this,"please give me the permission",Toast.LENGTH_SHORT).show();
} else {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
10);
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case 10: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
} else {
}
return;
}
}
}
public void requestDrawOverlays(){
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE);
}
@SuppressLint("NewApi")
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d("luffy","onActivityResult" + requestCode + " " + resultCode) ;
if (requestCode == OVERLAY_PERMISSION_REQ_CODE) {
if (Settings.canDrawOverlays(this)) {
sendStartBroadcast();
}
}
}
并且在MainActivity的onCreate中添加如下方法:
requestPermission(); //主动进行权限申请
4.通过以下接口使用Luffy
/**
* 启动Luffy窗口和log收集
* @param activity
* @param tags 自定义tag
*/
public static void try2StartLuffy(Activity activity,String[] tags){}
/**
* 移除Luffy窗口,但不停止log收集
* @param activity
*/
public static void stopLuffy(Activity activity)
/**
* 只启动Log收集,不启动窗口
* @param activity
*/
public static void justStartCollectLog(Activity activity){}
/**
*
* @param activity
*/
public static void stopLuffyAndSaveLog(Activity activity)
5. log文件会被保存在sdcard下的luffy文件夹内。
6. 部分截图
更新日志
1.1
-添加静默log抓取和保存功能(文件保存在sdcard/luffy下)
-添加LuffyView查看本地log文件,支持TAG过滤
1.0
-通过Luffy窗口显示App的Log并提供等级和TAG过滤方法。
Android Log工具之Luffy的更多相关文章
- Android Log工具类
import java.text.SimpleDateFormat; import java.util.Date; import android.util.Log; public class LogU ...
- Android 常见工具类封装
1,MD5工具类: public class MD5Util { public final static String MD5(String s) { char hexDigits[] = { '0' ...
- Android常见工具类封装
MD5加密 import android.annotation.SuppressLint; import java.security.MessageDigest; public class MD5 { ...
- 【转】Android开发工具--android-studio-bundle-141.2288178
原文网址:http://www.androiddevtools.cn/ AndroidDevTools简介 Android Dev Tools官网地址:www.androiddevtools.cn 收 ...
- 【腾讯开源】Android性能测试工具APT使用指南
[腾讯开源]Android性能测试工具APT使用指南 2014-04-23 09:58 CSDN CODE 作者 CSDN CODE 17 7833 腾讯 apt 安卓 性能测试 开源 我们近日对腾讯 ...
- Android Studio重构之路,我们重新来了解一下Google官方的Android开发工具
Android Studio重构之路,我们重新来了解一下Google官方的Android开发工具 记得我的第一篇博客就是写Android Studio,但是现在看来还是有些粗糙了,所有重构了一下思路, ...
- Android群英传笔记——第二章:Android开发工具新接触
Android群英传笔记--第二章:Android开发工具新接触 其实这一章并没什么可讲的,前面的安装Android studio的我们可以直接跳过,如果有兴趣的,可以去看看Google主推-Andr ...
- 【朝花夕拾】Android Log篇
前言 从事Android开发的这些年中,经常碰到这样一个现象:同一款app中,往往有好几种风格迥异的log处理方式,有时候会让维护者晕头转向.同时笔者也经常碰带一些模棱两可的问题:Log等级分好几种 ...
- 可显示行号的log工具
import android.util.Log; /** * (ExtendedLog=>ELog)可以记录行号,类名,方法名的Log工具 * * @author Fantouch */ pub ...
随机推荐
- echart初体验 动态加载数据
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- git 这一篇就够80%使用情况了
转 Git 命令详解及常用命令整理 Git 命令详解及常用命令 Git作为常用的版本控制工具,多了解一些命令,将能省去很多时间,下面这张图是比较好的一张,贴出了看一下: 关于git,首先需要了解几个名 ...
- spring中aop以xml配置方式
1 引jar包 springAOP\aopalliance.jar springAOP\aspectjrt.jar springAOP\aspectjweaver.jar springAOP\spri ...
- Laravel 5 教程 - 文件上传
一.简介 Laravel 有很棒的文件系统抽象层,是基于 Frank de Jonge 的 Flysystem 扩展包. Laravel 集成的 Flysystem 提供了简单的接口,可以操作本地端空 ...
- js setInterval()函数 [倒计时用]
定义和用法: setInterval() 方法用于在指定的毫秒数后调用函数或计算表达式.它与setTimeout()方法不同的是前者可以无限的循环,不会受调用函数的限制,要想退出此循环可 ...
- [git]git动画教程
git学习资料比较好的有廖雪峰的教程 还有2个动画教程: https://www.zhihu.com/question/38008771 git-scm 廖雪峰-Git教程 git-for ...
- 【ZT】NUMA架构的CPU -- 你真的用好了么?
本文从NUMA的介绍引出常见的NUMA使用中的陷阱,继而讨论对于NUMA系统的优化方法和一些值得关注的方向. 文章欢迎转载,但转载时请保留本段文字,并置于文章的顶部 作者:卢钧轶(cenalulu) ...
- 操作XmlDocument时,出现"System.OutOfMemoryException"异常,如何解决加载大数据的情况?
System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.at System.St ...
- Jquery学习笔记(2)--五角星评分
网购五星评分模拟: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- linux学习笔记9--命令cat
cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用. cat命令连接文件并打印到标准输出设备上, ...