欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android開發(fā)之在程序中時(shí)時(shí)獲取logcat日志信息的方法(附demo源碼下載)

 更新時(shí)間:2016年02月16日 10:54:53   作者:雨松MOMO  
這篇文章主要介紹了Android開發(fā)之在程序中時(shí)時(shí)獲取logcat日志信息的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了實(shí)時(shí)獲取logcat日志的原理、步驟與相關(guān)實(shí)現(xiàn)技巧,并附帶相應(yīng)的demo源碼供讀者下載參考,需要的朋友可以參考下

本文實(shí)例講述了Android開發(fā)之在程序中時(shí)時(shí)獲取logcat日志信息的方法。分享給大家供大家參考,具體如下:

今天分享一個(gè)在軟件開發(fā)中很實(shí)用的例子,也是這幾天在通宵加班中我使用的一個(gè)小例子, 在程序中監(jiān)聽Log信息。

為什么說它實(shí)用?原因是Android的開發(fā)廠商各種修改之后手機(jī)和手機(jī)之間以后存在很多差異。比如說魅族M9手機(jī) 開發(fā)中如果項(xiàng)目中涉及到訪問手機(jī)系統(tǒng)的地方,例如訪問系統(tǒng)短信庫,M9手機(jī)它會(huì)提示一個(gè)dialog框 讓用戶自己去選擇 訪問還是不訪問。這樣就給開發(fā)適配帶來了巨大的麻煩。本來在這里直接能拿到數(shù)據(jù)可是現(xiàn)在我須要對(duì)用戶的選擇進(jìn)行監(jiān)聽?  以后的小米手機(jī)肯定也會(huì)有這個(gè)問題~ 悲劇啊~~最后在這里這里我選擇使用監(jiān)聽LOG信息來監(jiān)聽用戶點(diǎn)擊按鈕授權(quán)與不受權(quán)。

1.獲取手機(jī)型號(hào)信息

//獲取機(jī)型名稱
android.os.Build.MODEL
//獲取SDK信息
android.os.Build.VERSION.SDK
//獲取版本號(hào)
android.os.Build.VERSION.RELEASE

那么代碼中就可以這樣寫

if (android.os.Build.MODEL.equals("meizu_m9")){
  System.out.println("我是M9手機(jī)");
}

2.Logcat說明

Android開發(fā)中一共有5個(gè)log信息過濾器 分別是 VERBOSE 、DEBUG、 INFO、 WARN、 ERROR

請(qǐng)各位盆友們觀察下面的代碼,內(nèi)容為監(jiān)聽一個(gè)按鈕點(diǎn)擊事件一旦點(diǎn)擊后輸出一段Logcat信息,為了監(jiān)聽系統(tǒng)打印的這個(gè)log信息我們開啟一個(gè)線程在后臺(tái)去監(jiān)聽它。

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.check);
/**得到這個(gè)按鈕對(duì)象**/
button = (Button)findViewById(R.id.button0);
/**監(jiān)聽這個(gè)按鈕**/
button.setOnClickListener(new OnClickListener() {
  @Override
  public void onClick(View view) {
  /**輸出一段Log信息**/
  Log.i("Mytest", "this is a test");
  /**開啟線程用于監(jiān)聽log輸出的信息**/
  new Thread(CheckActivity.this).start();
  }
});
}

線程開啟以后Runtime主要用于過濾logcat信息,這里主要說一下里面的參數(shù)

"logcat"不用說了吧,我們就是要監(jiān)聽它 呵呵。
"Mytest" 表示監(jiān)聽的Tag 這里以上面點(diǎn)擊按鈕輸出的LOG信息為例。
"I"表示監(jiān)聽的Log類型,當(dāng)然這里還可以寫其它類型 。VERBOSE(v) 、DEBUG(d)、 INFO(i)、 WARN(w)、 ERROR(e), 不過須要與監(jiān)聽的與Tag一一對(duì)稱才可以。
"*:s"表示監(jiān)聽所有的信息,這里表示只要tag是Mytest ,Logcat類型為i 的 所有Log都會(huì)被獲取到。

然后將所有過濾出來的log信息存在 BufferReader中 調(diào)用readLine()可以獲取到每一行的log信息。

line.indexOf("this is a test") 如果大于等于0 表示當(dāng)前獲取的log信息包含我們上面點(diǎn)擊按鈕的。

這樣子就可以監(jiān)聽各種LOG 無論是我們自己寫的還是系統(tǒng)寫的都可以監(jiān)聽到 哇咔咔~~

最后用Toast將內(nèi)容顯示出來

@Override
public void run() {
Process mLogcatProc = null;
BufferedReader reader = null;
try {
  //獲取logcat日志信息
  mLogcatProc = Runtime.getRuntime().exec(new String[] { "logcat","Mytest:I *:S" });
  reader = new BufferedReader(new InputStreamReader(mLogcatProc.getInputStream()));
  String line;
  while ((line = reader.readLine()) != null) {
    if (line.indexOf("this is a test") > 0) {
      //logcat打印信息在這里可以監(jiān)聽到
      // 使用looper 把給界面一個(gè)顯示
      Looper.prepare();
      Toast.makeText(this, "監(jiān)聽到log信息", Toast.LENGTH_SHORT).show();
      Looper.loop();
    }
  }
} catch (Exception e) {
  e.printStackTrace();
}
}

最重要的一定要加讀取系統(tǒng)LOG的權(quán)限喔,否則是監(jiān)聽不到的。

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

效果圖:

完整實(shí)例代碼點(diǎn)擊此處本站下載

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android開發(fā)入門與進(jìn)階教程》、《Android資源操作技巧匯總》、《Android視圖View技巧總結(jié)》及《Android控件用法總結(jié)

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Android實(shí)現(xiàn)不同apk間共享數(shù)據(jù)的方法(2種方法)

    Android實(shí)現(xiàn)不同apk間共享數(shù)據(jù)的方法(2種方法)

    這篇文章主要介紹了Android實(shí)現(xiàn)不同apk間共享數(shù)據(jù)的方法,介紹了apk自定義借口實(shí)現(xiàn)數(shù)據(jù)共享與基于User id的數(shù)據(jù)共享,并重點(diǎn)介紹了基于User id的數(shù)據(jù)共享實(shí)現(xiàn)技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2016-01-01
  • Android Adapter里面嵌套ListView實(shí)例詳解

    Android Adapter里面嵌套ListView實(shí)例詳解

    這篇文章主要介紹了Android Adapter里面嵌套ListView實(shí)例詳解的相關(guān)資料,這里提供實(shí)例代碼并說明如何實(shí)現(xiàn)該功能,需要的朋友可以參考下
    2017-07-07
  • Android控件ViewFlipper仿淘寶頭條垂直滾動(dòng)廣告條

    Android控件ViewFlipper仿淘寶頭條垂直滾動(dòng)廣告條

    這篇文章主要為大家詳細(xì)介紹了Android控件ViewFlipper仿淘寶頭條垂直滾動(dòng)廣告條,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Android左右滑出菜單實(shí)例分析

    Android左右滑出菜單實(shí)例分析

    想在首頁加個(gè)從左滑動(dòng)出來的菜單,我查閱網(wǎng)上資料,并自己摸索,實(shí)現(xiàn)了左、右兩邊都能滑出菜單,并且,左、右菜單中,都可以加ListView等這類需要解決GestureDetector沖突的問題
    2013-06-06
  • Android?jar庫源碼Bolts原理解析

    Android?jar庫源碼Bolts原理解析

    這篇文章主要介紹了Android?jar庫源碼Bolts原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Android startActivityForResult和setResult的區(qū)別

    Android startActivityForResult和setResult的區(qū)別

    這篇文章主要介紹了 Android startActivityForResult和setResult的區(qū)別的相關(guān)資料,希望通過本文能幫助大家理解這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • Android Studio 設(shè)置代碼提示和代碼自動(dòng)補(bǔ)全快捷鍵方式

    Android Studio 設(shè)置代碼提示和代碼自動(dòng)補(bǔ)全快捷鍵方式

    這篇文章主要介紹了Android Studio 設(shè)置代碼提示和代碼自動(dòng)補(bǔ)全快捷鍵方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Flutter實(shí)現(xiàn)用視頻背景的登錄頁的示例代碼

    Flutter實(shí)現(xiàn)用視頻背景的登錄頁的示例代碼

    這篇文章主要介紹了Flutter實(shí)現(xiàn)用視頻背景的登錄頁的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Android自定義控件實(shí)現(xiàn)底部菜單(上)

    Android自定義控件實(shí)現(xiàn)底部菜單(上)

    這篇文章主要為大家詳細(xì)介紹了Android自定義控件實(shí)現(xiàn)底部菜單的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Android自定義控件實(shí)現(xiàn)優(yōu)雅的廣告輪播圖

    Android自定義控件實(shí)現(xiàn)優(yōu)雅的廣告輪播圖

    這篇文章主要為大家詳細(xì)介紹了Android自定義控件實(shí)現(xiàn)優(yōu)雅的廣告輪播圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03

最新評(píng)論