android4.0以上监听home(屏蔽home或做其他操作)

android 4.0以后无法通过更改页面的类型来监听home键了。如果不改源码的情况下,下面的方式可以很好的监听到home键(前提是手机打系统日志,有些手机日志被关闭了(如华为荣耀)就无法监听了)。

 protected void onResume()
    {
        super.onResume();
        isTesting=true;
        new CatchLogThread().start();
    }
class CatchLogThread extends Thread {  
     @Override  
      public void run() {  
          Process mLogcatProc = null;  
          BufferedReader reader = null;  
           String line;  
           while (isTesting) {  
               try {  
                 // 获取logcat日志信息   
                   mLogcatProc = Runtime.getRuntime().exec(new String[] { "logcat", "ActivityManager:I *:S" });  
                   reader = new BufferedReader(new InputStreamReader(mLogcatProc.getInputStream()),2*1024);  
                   while ((line = reader.readLine()) != null) {  
                       if (line.indexOf("android.intent.category.HOME") > 0) {  
                           isTesting = false;  
                           System.out.println("DDDDDDDDDDDDDDDDDDDDDDDDD");
                           handler.sendMessage(handler.obtainMessage());   
                         Runtime.getRuntime().exec("logcat -c");//删除日志   
                          break;  
                      }   
                  }  
               } catch (Exception e) {  
                   e.printStackTrace();  
               }  
           }  
      }  
    };  
Handler handler = new Handler() {  
       public void handleMessage(android.os.Message msg) {
           
           startActivity(new Intent(MainActivity.this,MainActivity.class));
           Toast.makeText(MainActivity.this, "I Have Home is pressed!!!!!",Toast.LENGTH_LONG).show();
           System.out.println("Home is Pressed+++++++++++++++++");
        };   
   };  

以上是全部精华代码。要对home键按下后做操作可以在handler中进行。希望可以帮助到一些冥思苦想而不得解的人。

最后记得在AndroidManifest.xml中加读取日志权限:

<uses-permission android:name="android.permission.READ_LOGS"></uses-permission>

猜你喜欢

转载自hw-hanwei-126-com.iteye.com/blog/1688580