android Runtime.getRuntime().exec使用

1805 ワード

http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page=1
http://blog.csdn.net/zmyde2010/article/details/6123987
http://search.iteye.com/blog/253257
1.read value:
 public String readRegister(String path){
		 try {
 
				Process process = Runtime.getRuntime().exec("/system/bin/cat  "+path);
 
			    BufferedReader reader = new BufferedReader(
			            new InputStreamReader(process.getInputStream()));
			    int read;
			    char[] buffer = new char[4096];
			    StringBuffer output = new StringBuffer();
			    while ((read = reader.read(buffer)) > 0) {
			        output.append(buffer, 0, read);
			    }
			    reader.close();
			    
			    // Waits for the command to finish.
			    process.waitFor();			    
			    
			    System.out.println(output.toString());
			    valRegister = output.toString();
			    return valRegister;
			    
			} catch (IOException e) {
			    throw new RuntimeException(e);
			} catch (InterruptedException e) {
			    throw new RuntimeException(e);
			}		
     }
2.change mode: 
Runtime.getRuntime().exec("su -c chmod 777 /data/glad.txt");
3.write value:
Runtime.getRuntime().exec("/system/bin/sh /data/test.sh");
test.sh:
echo 777 > /data/glad.txt
ps: 
You cannot use Runtime.exec()like a commandライン
Runtime.exec()を使ってコマンドラインのようなプログラムを実行できません。リダイレクト出力:Process proc=rt.exc(java jec'Hello World'test.txt);  
このプログラムの意図は、jechoというJavaプログラムを実行し、その出力をtest.txtファイルにリダイレクトすることである。しかし、このような書き方は正確な結果が得られません。Runtime.exec()方法はこのような複雑なコマンドラインをうまく実行できないので、自分の処理プログラムを通じて出力し、対応するファイルに書き込む必要があります。
ps:
   書き込み操作は、アプリをシステムアプリケーションに設定する必要があります。