アンドロイドのあれこれ
[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
アプリからLinuxコマンドを実行してみる
エミュレータまたは端末上でコマンドを実行するためにシェルコマンドで
$ adb shellのようにアプリからできないかと思って実装してみました。
shell@android:/ $
以下はサンプルコード
MainActivity.java
実装イメージ
試したコマンドは「ls」「ls -l」だけでアプリからほかのコマンドももっと使えるように調整してみたいとおもいます。タッチスクリーンなのにCUIなんて利点はないですけど
こちらの記事から参考しました。
http://blog.livedoor.jp/shizuku_kun/archives/51596903.html
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;
}
}
実装イメージ
試したコマンドは「ls」「ls -l」だけでアプリからほかのコマンドももっと使えるように調整してみたいとおもいます。タッチスクリーンなのにCUIなんて利点はないですけど
こちらの記事から参考しました。
http://blog.livedoor.jp/shizuku_kun/archives/51596903.html
COMMENT