1.首先你要在AndroidManifest.xml添加一项读取系统Log的权限
<!– 允许程序读取系统日志 –>
<uses-permission android:name=”android.permission.READ_LOGS” />
2.
/**
* “logcat”不用说了吧,我们就是要监听它
* “ActivityManager” 表示监听的Tag 这里以上面点击按钮输出的LOG信息为例。
* “I”表示监听的Log类型,当然这里还可以写其它类型 。VERBOSE(v) 、DEBUG(d)、 INFO(i)、 WARN(w)、 ERROR(e), 不过须要与监听的与Tag一一对称才可以。
* “*:s”表示监听所有的信息,这里表示只要tag是ActivityManager ,Logcat类型为i 的 所有Log都会被获取到。
* 点击Home时会触发OnPause、onStop但是在某些手机上可能触发onStop延迟或者不触发
*/
new Thread(new Runnable()
{
@Override
public void run()
{
Process logcatProcess = null;
BufferedReader bufferedReader = null;
try
{
/** 获取系统logcat日志信息 */
logcatProcess = Runtime.getRuntime().exec(new String[] {“logcat”, “ActivityManager:I *:S”});
bufferedReader = new BufferedReader(new InputStreamReader(logcatProcess.getInputStream()));
String line;
while ((line = bufferedReader.readLine()) != null)
{
if (line.indexOf(“cat=[android.intent.category.HOME]“) > 0)
{
/** 这里可以处理你对点击Home的操作哦 我这里是完全退出应用*/
Session.exit();
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0×10200000 cmp=com.dianxinos.dxhome/com.dianxinos.launcher2.Launcher } from pid 1277
模拟器是:
Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0×10200000 cmp=com.android.launcher/com.android.launcher2.Launcher }
他们的
Level:I
PID:59
Application:system process
Tag:ActivityManager
他们都有一个共同点都有:cat=[android.intent.category.HOME]
<!– 允许程序读取系统日志 –>
<uses-permission android:name=”android.permission.READ_LOGS” />
2.
/**
* “logcat”不用说了吧,我们就是要监听它
* “ActivityManager” 表示监听的Tag 这里以上面点击按钮输出的LOG信息为例。
* “I”表示监听的Log类型,当然这里还可以写其它类型 。VERBOSE(v) 、DEBUG(d)、 INFO(i)、 WARN(w)、 ERROR(e), 不过须要与监听的与Tag一一对称才可以。
* “*:s”表示监听所有的信息,这里表示只要tag是ActivityManager ,Logcat类型为i 的 所有Log都会被获取到。
* 点击Home时会触发OnPause、onStop但是在某些手机上可能触发onStop延迟或者不触发
*/
new Thread(new Runnable()
{
@Override
public void run()
{
Process logcatProcess = null;
BufferedReader bufferedReader = null;
try
{
/** 获取系统logcat日志信息 */
logcatProcess = Runtime.getRuntime().exec(new String[] {“logcat”, “ActivityManager:I *:S”});
bufferedReader = new BufferedReader(new InputStreamReader(logcatProcess.getInputStream()));
String line;
while ((line = bufferedReader.readLine()) != null)
{
if (line.indexOf(“cat=[android.intent.category.HOME]“) > 0)
{
/** 这里可以处理你对点击Home的操作哦 我这里是完全退出应用*/
Session.exit();
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}).start();
Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0×10200000 cmp=com.dianxinos.dxhome/com.dianxinos.launcher2.Launcher } from pid 1277
模拟器是:
Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0×10200000 cmp=com.android.launcher/com.android.launcher2.Launcher }
他们的
Level:I
PID:59
Application:system process
Tag:ActivityManager
他们都有一个共同点都有:cat=[android.intent.category.HOME]