很长时间没写关于android的东西了,最近接触android的少了。因为公司不需要我兼任android开发了。然后很快又要换工作啦。到了新东家,android收不到接触就更少啦。 还是把自己平时用的log工具开源 变成一个库,造福android开发者吧。
Zprint
说一下优点:
- 控制台点击日志跳转到输出日志代码处。
- 打印日志的同时,存储日志到本地文件
- 打印日志的时候,在日志代码里面就可以操作最终输出到控制台的数据。不需要外部的操作数据,来控制打印的日志。
使用教程
添加依赖
在项目 root build.gradle 里面添加:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
在module build.gradle里面添加依赖:
dependencies {
implementation 'com.github.planitian:Zprint:1.1.1'
}
使用实例
首先,note如果你需要打印日志到本地文件,必须获取读写权限。
一 首先在AndroidManifest.xml
声明权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
android 6.0以后还需要动态申请权限:
/**
* 检查有无权限
*/
private void checkPermission() {
//先检测有没有权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PERMISSION_DENIED) {
//请求权限 REQUEST_CODE是自己定义的请求码 这样才能知道 是不是自己申请的
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
//判断是否是自己的请求
if (requestCode == REQUEST_CODE) {
//判断是否获取权限
if (grantResults[0] == PERMISSION_GRANTED) {
Toast.makeText(this, "已经获取读取权限", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "获取读取权限 失败", Toast.LENGTH_SHORT).show();
}
}
}
在activity 的onCreate周期里面 调用checkPermission()方法就行。
方法说明
对于 startWrite 方法,可以放在在任何地方多次调用,每次调用会覆盖上一次的设定。
代码示例
package com.admin.plani.zprintpro;
import android.Manifest;
import android.os.Environment;
import android.support.annotation.NonNull;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
import com.admin.plani.zprintlibrary.Zprint;
import static android.content.pm.PackageManager.PERMISSION_DENIED;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
public class MainActivity extends AppCompatActivity {
public int REQUEST_CODE = 10;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//检查权限
checkPermission();
//测试
te();
}
void te() {
//开启打印
//设定 日志文件存储到那个位置 note 这句代码可以放在任何地方,只要在打开写入日志文件功能以前。
Zprint.startWrite(Environment.getExternalStorageDirectory() + "/plani/one.txt");
//打印error等级的日志 打印完这句日志,会变成debug等级
Zprint.level = Zprint.Level.ERROR;
//没有key的 一个参数 操作
Zprint.log("nokey", s -> System.out.println(s.toUpperCase()));
Zprint.level = Zprint.Level.WARN;
Zprint.log("warn");
Zprint.log("key", "o", s -> {
System.out.println("one " + s);
}, "t", s -> {
System.out.println("two " + s);
});
Zprint.log("ww", s -> {
System.out.println("one " + s);
}, "tttt", s -> {
System.out.println("two " + s);
});
}
/**
* 检查有无权限
*/
private void checkPermission() {
//先检测有没有权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PERMISSION_DENIED) {
//请求权限 REQUEST_CODE是自己定义的请求码 这样才能知道 是不是自己申请的
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
//判断是否是自己的请求
if (requestCode == REQUEST_CODE) {
//判断是否获取权限
if (grantResults[0] == PERMISSION_GRANTED) {
Toast.makeText(this, "已经获取读取权限", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "获取读取权限 失败", Toast.LENGTH_SHORT).show();
}
}
}
}
最后个人推荐可以在application的onCreate周期里面设定输出日志到文件功能。