忍者ブログ

アンドロイドのあれこれ

アプリからLinuxコマンドを実行してみる
エミュレータまたは端末上でコマンドを実行するためにシェルコマンドで
$ adb shell
shell@android:/ $
のようにアプリからできないかと思って実装してみました。

以下はサンプルコード
MainActivity.java
public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//コマンド実行後の結果を表示するためのEditText
final EditText showText = (EditText)findViewById(R.id.showText);
showText.setKeyListener(null);
showText.setClickable(false);
showText.requestFocus();
showText.setSelection(showText.getText().length());

//コマンドの入力
EditText inputText = (EditText)findViewById(R.id.inputText);
inputText.setOnKeyListener(new View.OnKeyListener(){

@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_UP
&& keyCode == KeyEvent.KEYCODE_ENTER) {

EditText inputTextSub = (EditText)findViewById(R.id.inputText);
String putCommText = inputTextSub.getText().toString();
if (!putCommText.equals("") || putCommText.length() != 0) {
String commResult =
execCommand(putCommText);
showText.setText(showText.getText().toString()
+ "\n" + commResult);
showText.requestFocus();
showText.setSelection(showText.getText().length());
inputTextSub.requestFocus();
inputTextSub.setText("");
}
return true;
}
return false;
}

});
inputText.requestFocus();
}

public String execCommand(String commd) {
Runtime runtime = Runtime.getRuntime();
Process process;
String output = "", line = "";
BufferedReader reader;
try {
//実行するコマンドを指定
process = runtime.exec(commd);
reader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
while ((line = reader.readLine()) != null) {
output += line + "\n";
}
reader.close();
process.waitFor();
} catch (IOException e) {
} catch (InterruptedException e) {
}
return output;
}
}


実装イメージ
アプリからLinuxコマンドを実行してみる


試したコマンドは「ls」「ls -l」だけでアプリからほかのコマンドももっと使えるように調整してみたいとおもいます。タッチスクリーンなのにCUIなんて利点はないですけど

こちらの記事から参考しました。
http://blog.livedoor.jp/shizuku_kun/archives/51596903.html
COMMENT
NAME
TITLE
MAIL (非公開)
URL
EMOJI
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
COMMENT
PASS (コメント編集に必須です)
SECRET
管理人のみ閲覧できます
 
PR
© Android Advent
powered by 忍者ツールズ / 忍者ブログ / [PR]