編輯:關於Android編程
本文實例講述了Android開發之在程序中時時獲取logcat日志信息的方法。分享給大家供大家參考,具體如下:
今天分享一個在軟件開發中很實用的例子,也是這幾天在通宵加班中我使用的一個小例子, 在程序中監聽Log信息。
為什麼說它實用?原因是Android的開發廠商各種修改之後手機和手機之間以後存在很多差異。比如說魅族M9手機 開發中如果項目中涉及到訪問手機系統的地方,例如訪問系統短信庫,M9手機它會提示一個dialog框 讓用戶自己去選擇 訪問還是不訪問。這樣就給開發適配帶來了巨大的麻煩。本來在這裡直接能拿到數據可是現在我須要對用戶的選擇進行監聽? 以後的小米手機肯定也會有這個問題~ 悲劇啊~~最後在這裡這裡我選擇使用監聽LOG信息來監聽用戶點擊按鈕授權與不受權。
1.獲取手機型號信息
//獲取機型名稱 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手機"); }
2.Logcat說明
Android開發中一共有5個log信息過濾器 分別是 VERBOSE 、DEBUG、 INFO、 WARN、 ERROR
請各位盆友們觀察下面的代碼,內容為監聽一個按鈕點擊事件一旦點擊後輸出一段Logcat信息,為了監聽系統打印的這個log信息我們開啟一個線程在後台去監聽它。
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.check); /**得到這個按鈕對象**/ button = (Button)findViewById(R.id.button0); /**監聽這個按鈕**/ button.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { /**輸出一段Log信息**/ Log.i("Mytest", "this is a test"); /**開啟線程用於監聽log輸出的信息**/ new Thread(CheckActivity.this).start(); } }); }
線程開啟以後Runtime主要用於過濾logcat信息,這裡主要說一下裡面的參數
"logcat"不用說了吧,我們就是要監聽它 呵呵。
"Mytest" 表示監聽的Tag 這裡以上面點擊按鈕輸出的LOG信息為例。
"I"表示監聽的Log類型,當然這裡還可以寫其它類型 。VERBOSE(v) 、DEBUG(d)、 INFO(i)、 WARN(w)、 ERROR(e), 不過須要與監聽的與Tag一一對稱才可以。
"*:s"表示監聽所有的信息,這裡表示只要tag是Mytest ,Logcat類型為i 的 所有Log都會被獲取到。
然後將所有過濾出來的log信息存在 BufferReader中 調用readLine()可以獲取到每一行的log信息。
line.indexOf("this is a test") 如果大於等於0 表示當前獲取的log信息包含我們上面點擊按鈕的。
這樣子就可以監聽各種LOG 無論是我們自己寫的還是系統寫的都可以監聽到 哇咔咔~~
最後用Toast將內容顯示出來
@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打印信息在這裡可以監聽到 // 使用looper 把給界面一個顯示 Looper.prepare(); Toast.makeText(this, "監聽到log信息", Toast.LENGTH_SHORT).show(); Looper.loop(); } } } catch (Exception e) { e.printStackTrace(); } }
最重要的一定要加讀取系統LOG的權限喔,否則是監聽不到的。
<uses-permission android:name="android.permission.READ_LOGS" />
效果圖:
完整實例代碼點擊此處本站下載。
更多關於Android相關內容感興趣的讀者可查看本站專題:《Android開發入門與進階教程》、《Android資源操作技巧匯總》、《Android視圖View技巧總結》及《Android控件用法總結》
希望本文所述對大家Android程序設計有所幫助。
最近由於項目太大了,導致編譯通不過(Android對一個應用中的方法個數貌似有限制),所以一直琢磨著能否將某些模塊的APK不用安裝,動態加載,通過在網上查找
Android中經常會使用到Dialog(彈出框效果),而且功能非常強大,可以模擬出N種彈出框效果。如圖所示:下面將通過一個小實例,來像大家展示Android中功能強大的
效果圖如下: package com.example.l3_sharedpreferences; import com.example.l3_sharedprefere
android-library-publish-to-jcenter是一個幫助Android開發者將AAR庫發布到jcenter的項目,android-library-p