onCreateView
次のように、メソッドから別のスレッドを開始したい:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new Runnable(){
public void run(){
checkRoot();
}
}).start();
}
しかし、logcat でこのエラーが発生しています:
06-16 12:52:37.088: E/AndroidRuntime(9707): FATAL EXCEPTION: Thread-804
06-16 12:52:37.088: E/AndroidRuntime(9707): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
使用できることはわかっていますAsyncTask
が、好奇心のためだけに上記の方法を使用したいと考えています。
これはcheckRoot
方法です:
private void checkRoot(){
Process p;
try{
// Preform su to get root privledges
p = Runtime.getRuntime().exec("su");
// Attempt to write a file to a root-only
DataOutputStream os = new DataOutputStream(p.getOutputStream());
os.writeBytes("mount -o rw,remount -t yaffs2 /dev/block/mtdblock0 /system\n");
os.writeBytes("echo \"Do I have root?\" >/system/etc/temporary.txt\n");
// Close the terminal
os.writeBytes("exit\n");
os.flush();
try{
p.waitFor();
if(p.exitValue() != 225){
showToast("ROOTED !");
} else {
showToast("not root");
setContentView(R.layout.no_root);
}
} catch(InterruptedException e){
showToast("not root");
setContentView(R.layout.no_root);
}
} catch(IOException e){
showToast("not root");
setContentView(R.layout.no_root);
}
}