我在市場上有一個應用程序,只適用於根植設備。我已經在根本無根的G1,MT3G和Cliq上廣泛測試了該應用程序,沒有任何錯誤。我收到來自植入設備的人的低收視率,說應用程序告訴他們他們沒有植根(當然,他們通常不會留下重要的信息,如電話和什麼光盤)Android:應用程序無法在某些根植設備上工作...爲什麼?
這裏是產生錯誤的代碼...任何人都可以看出問題可能是什麼?
final Button button = (Button) findViewById(R.id.******);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String command1 = "mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system";
String command2 = "cp -f /sdcard/******* /etc/";
String command3 = "dos2unix -u /etc/*****";
String command4 = "mount -o ro,remount -t yaffs2 /dev/block/mtdblock3 /system";
execCommandLine1(command1);
execCommandLine1(command2);
execCommandLine1(command3);
execCommandLine1(command4);
}
void execCommandLine1(String command)
{
Runtime runtime = Runtime.getRuntime();
Process proc = null;
OutputStreamWriter osw = null;
try
{
proc = runtime.exec("su");
osw = new OutputStreamWriter(proc.getOutputStream());
osw.write(command);
osw.flush();
osw.close();
}
catch (IOException ex)
{
Log.e("execCommandLine()", "Command resulted in an IO Exception: " + command);
return;
}
finally
{
if (osw != null)
{
try
{
osw.close();
}
catch (IOException e){}
}
}
try
{
proc.waitFor();
}
catch (InterruptedException e){}
if (proc.exitValue() != 0)
{
**// Error Dialog that is being erroneously displayed**
}
else {
// Success Dialog
}
}
而錯誤是......什麼? – CommonsWare 2010-10-12 21:26:05
我想某些設備在'/ dev/block/mtdblock3'可能沒有'/ system'文件系統,或者它們沒有安裝'dos2unix'或者路徑中。 – 2010-10-12 21:33:03
@CommonsWare我的錯誤對話框正顯示在一些有根的設備上......指示(proc.exitValue()!= 0)不應該發生在根源電話上,除非我的命令或我的方式有問題正在執行它們 – 2010-10-12 21:44:15