国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

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

2020-04-11 10:48:52
字體:
來源:轉載
供稿:網友

本文實例講述了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信息我們開啟一個線程在后臺去監聽它。

@Overridepublic 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將內容顯示出來

@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打印信息在這里可以監聽到      // 使用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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 曲松县| 宁晋县| 娄烦县| 乌审旗| 高安市| 双流县| 乐至县| 化州市| 英超| 金门县| 张家界市| 清水县| 桓台县| 临潭县| 宁乡县| 常山县| 内江市| 谷城县| 湘西| 绍兴县| 苏州市| 昌江| 佳木斯市| 澳门| 黄梅县| 永寿县| 梅河口市| 永靖县| 莫力| 桃源县| 临桂县| 彭州市| 石渠县| 巴彦淖尔市| 乌兰察布市| 都昌县| 井研县| 北川| 遂昌县| 蒙城县| 玉龙|