在上一次博客http://blog.youkuaiyun.com/qazqwdxz/article/details/45248781
提到了如何输出logcat到文件,但一有问题又要调试,必须修改代码,如果一直开启功能又要定期删除logcat文件。使用不是太方便。
如果是一般的解决方法是将属性或配置写到某个properties里读写,本文使用另外一种更加简便的方法来达到目的。
就是使用Broadcast和SharedPreferences
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
public class PreferencesManager extends BroadcastReceiver {
public static boolean DEBUG = true;
private SharedPreferences preferences = null;
private boolean isLogcat = false;
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
DEBUG = intent.getBooleanExtra("Debug", DEBUG);
if(preferences == null)
preferences = context.getSharedPreferences("PreferencesManager", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("Debug",DEBUG);
editor.commit();
if(intent.getBooleanExtra("Logcat", false)){
LogcatManager.getInstance().startLogcatToFile(context);
isLogcat = true;
}else{
if(isLogcat) {
LogcatManager.getInstance().stopLogcatToFile();
isLogcat = false;
}
}
}
public void initPreferences(Context context){
if(preferences == null)
preferences = context.getSharedPreferences("PreferencesManager", Activity.MODE_PRIVATE);
DEBUG = preferences.getBoolean("Debug", DEBUG);
}
}
然后使用adb命令就能可以主动打开关闭功能了,adb使用方法
开启功能:adb shell am broadcast -a com.android.test --ez Debug true
关闭功能:adb shell am broadcast -a com.android.test --ez Debug false
adb发送广播详细用法:
adb shell am broadcast 后面的参数有:
[-a <ACTION>]
[-d <DATA_URI>]
[-t <MIME_TYPE>]
[-c <CATEGORY> [-c <CATEGORY>] ...]
[-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]
[--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]
[-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]
[-n <COMPONENT>]
[-f <FLAGS>] [<URI>]