1. 程式人生 > >關於Android中Runtime.exec()方法的使用誤區

關於Android中Runtime.exec()方法的使用誤區

在工作中曾經遇到需要使用Java程式碼執行shell命令的問題。Android中倒是有幾個方法可以來用一下。

由於被困擾了一段時間,今特記之,已明己。

之前是這樣用的:

Runtime.getRuntime().exec("ps | grep xxx");

但是不幸的是,在該方法返回的InputStream流中並沒有獲得我想要的結果。鬱悶ing。

在網上查找了很多資料,終於。。。不廢話,看程式碼:

String[] cmd = new String[]{"sh","-c","ps | grep xxx"};

Runtime.getRuntime().exec(cmd);

問題解決,啤酒一杯!

相關推薦

關於AndroidRuntime.exec()方法的使用誤區

在工作中曾經遇到需要使用Java程式碼執行shell命令的問題。Android中倒是有幾個方法可以來用一下。 由於被困擾了一段時間,今特記之,已明己。 之前是這樣用的: Runtime.getRuntime().exec("ps | grep xxx"); 但是不幸的是,在

Android BitmapFactory.decodeResource方法引數個代表什麼意思

BitmapFactory.decodeResource(?,?)這個帶兩個引數的方法:第一個引數是包含你要載入的點陣圖資原始檔的物件(一般寫成 getResources()就ok了);第二個時你需要載入的點陣圖資源的Id。 BitmapFactory.decodeResource(?

java: Runtime.exec方法詳解!程式如何動態編譯輸入的程式碼並執行?

在做一個專案時用到了Runtime.exec(String command),但是網上的很多部落格講解的都很不詳細明白,也不全,乾脆我自己來做一個講解。 我們先來看看api的解釋: 從字面上理解的意思就是在單獨開啟一條執行緒執行指定的命令。當然,這個方法有多個過載

android泛型方法的用法和作用

舉個例子 首先我的activity中  @Route(path = "/datainit/DataInitActivity") class DataInitActivity: BaseActivity(){ override fun onCreate(savedInstan

使用jsexec()方法構造正則表示式驗證

     一、Javascript中的正則表示式     在Javascript中,可以使用RegExp物件構造正則表達。我們需要新建一個例項化的RegExp()物件,可以傳入兩個引數:第一個引數是匹配的模式,第二個引數是一個可選項,可以傳入三種引數。i表示不區分大小寫,g

Android呼叫js方法及js呼叫本地方法

Android中內建了WebKit模組,而該模組的Java層檢視類就是WebView,所有需要使用Web瀏覽器功能的Android都需要建立該檢視類物件顯示和處理請求的網路資源。目前WebKit支援Http、Https、Ftp和JavaScript請求。下面我們重點看一下如

檢視Linux & Android記憶體佔用方法

1. procrank (only for Android) 它從/proc/pid/maps中讀取資訊來進行統計。原始碼位於:/system/extras/procrank 記憶體耗用:VSS/RSS/PSS/USS • VSS - Virtual Set Size 虛擬

androidView.measure方法詳解

當Activity獲得焦點時,它將被要求繪製自己的佈局,Android framework將會處理繪製過程,Activity只需提供它的佈局的根節點。   繪製過程從佈局的根節點開始,從根節點開始測量和繪製整個layout tree。   每一個ViewGr

java Runtime.exec方法詳解!程式如何動態編譯輸入的程式碼並執行?!

在做一個專案時用到了Runtime.exec(String command),但是網上的很多部落格講解的都很不詳細明白,也不全,乾脆我自己來做一個講解。 我們先來看看api的解釋: 從字面上理解的意思就是在單獨開啟一條執行緒執行指定的命令。當然,這個方法有多個過載

Android利用newInstance()方法例項化fragment

Android是在Android 3.0 (API level 11)開始引入Fragment的。Fragment可以使你能夠將activity分離成多個可重用的元件,每個都有它自己的生命週期和UI。那我們應該怎麼去建立fragment呢?Google已經考慮到

AndroidCursor的方法

使用SQLiteDatabase物件呼叫 insert()方法 傳入標的名稱與ContentValues 新增的內容 則可以向資料庫表中寫入一條資料 delete ()為刪除一條資料 update()為更新一條資料。 我詳細說一下查詢一條資料使用的方法 query

AndroidgetDrawable和getColor過時的替代方法

this logs con 知識 log launcher 16px ase spa 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 前言 Android SDK 升級到 23 之後,getDrawable和getColor方法提示過時。 解決方案 getRe

Android 文字體的設置方法和使用技巧

paint mono tail water 無效 ebo roi eat cep Android TextView字體顏色等樣式具體解釋連接:http://blog.csdn.net/pcaxb/article/details/47341249 1.使用字體庫(自己定

Android Bitmap和Drawable相互轉換的方法

canvas board null height .com factory oar tool pla 1、Drawable --> Bitmap [java] view plain copy Bitmap drawable2Bitmap(Drawabl

我的Android進階之旅------>Androidandroid:windowSoftInputMode的使用方法

onf ecif 標簽 ear evel per another not 行為 面試題:怎樣在顯示某個Activity時馬上彈出軟鍵盤? 答案:在AndroidManifest.xml文件裏設置<activity>標簽的android:win

Android,子線程使用主線程的組件出現問題的解決方法

play try tac demo androi cte over cep back   Android中,主線程中的組件,不能被子線程調用,否則就會出現異常。   這裏所使用的方法就是利用Handler類中的Callback(),接受線程中的Message類發來的消息,然

BlockCanary在Android原生開發的配置方法

static 簡單 分析 用戶 多少秒 arr all 方法 阻塞 BlockCanary對主線程操作進行了完全透明的監控,並能輸出有效的信息,幫助開發分析、定位到問題所在,迅速優化應用。 下面介紹配置方法。 1. 找到配置BlockCanary的jar包和arr包 blo

Android為什麽主線程不會因為Looper.loop()方法造成阻塞

launch google blog 很多 isp android oid 啟動 組件 很多人都對Handler的機制有所了解,如果不是很熟悉的可以看看我 如果看過源碼的人都知道,在處理消息的時候使用了Looper.loop()方法,並且在該方法中進入了一個死循環,同時Lo

Android在fragment A裡面點選button跳轉到fragment B實現方法

方法一:直接getActivity,使用activity的fragmenttransation的replace方法替換 假設 class OneFragment extends Fragment{ private Button btn; @Override p

AndroidService的使用方法

  目錄 Service 介紹 Service兩種啟動方式 使用 測試 IntentService Activity與Service之間的通訊 繼承Binder類 Messenger AIDL Service 介紹