人人妻人人,亚洲人妻丝袜一区电影,日韩少妇熟女专区,午夜欧美成人在线一线天,午夜精品一区二区免费看,一区二区三区综合激情,亚洲99精品热九九,卡一卡二卡三卡四精品在线,miaa-311在线看

Android開發(fā)在程序中獲取logcat日志信息的方法

時間:2021-04-13 13:33:22 日志日記

Android開發(fā)在程序中獲取logcat日志信息的方法

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

Android開發(fā)在程序中獲取logcat日志信息的方法

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

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

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

  那么代碼中就可以這樣寫

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

  2.Logcat說明

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

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

  @Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.check);/**得到這個按鈕對象**/button = (Button)findViewById(R.id.button0);/**監(jiān)聽這個按鈕**/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 這里以上面點擊按鈕輸出的LOG信息為例。

  "I"表示監(jiān)聽的Log類型,當(dāng)然這里還可以寫其它類型 。VERBOSE(v) 、DEBUG(d)、 INFO(i)、 WARN(w)、 ERROR(e), 不過須要與監(jiān)聽的與Tag一一對稱才可以。

  "*:s"表示監(jiān)聽所有的信息,這里表示只要tag是Mytest ,Logcat類型為i 的. 所有Log都會被獲取到。

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

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

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

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

  @Overridepublic 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 把給界面一個顯示 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)聽不到的。

  效果圖:

【Android開發(fā)在程序中獲取logcat日志信息的方法】相關(guān)文章:

linux系統(tǒng)中查看日志方法07-02

經(jīng)典日志菊花年年開06-19

Android SD卡上文件操作及記錄日志操作具體方法06-23

在Ubuntu系統(tǒng)中清楚Bash日志記錄方法07-02

《指尖暈開的涼》日志06-30

高三獲取成功的方法建議12-17

android 捕獲系統(tǒng)異常并上傳日志的實例06-23

C++日志記錄類以及日志記錄程序06-23

microlog4android如何將Android Log日志寫到SD卡文件06-23

民勤县| 自治县| 宁武县| 棋牌| 时尚| 奇台县| 岳阳县| 东平县| 平果县| 双流县| 平邑县| 正安县| 渭源县| 永宁县| 河间市| 武城县| 佛山市| 陆丰市| 屯昌县| 沁阳市| 和龙市| 安丘市| 宁波市| 横山县| 宁乡县| 抚宁县| 邵阳市| 汾西县| 南安市| 新乡市| 安仁县| 云阳县| 六枝特区| 临沂市| 金川县| 怀宁县| 寿阳县| 黄骅市| 房山区| 三河市| 米泉市|