У меня есть приложение на рынке, предназначенное только для корневых устройств. Я протестировал приложение на корневых и некорневых G1, MT3G и Cliq без ошибок. Я получаю несколько низких оценок от людей с предположительно укорененными устройствами, заявляя, что приложение говорит им, что они не внедрены (конечно, они обычно не оставляют важной информации, такой как телефон и какой rom)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
Я полагаю, что некоторые устройства могут не иметь файловую систему '/ system' в'/dev/block/mtdblock3', или они не поставляются с 'dos2unix', установленным или в пути. –
@CommonsWare На некоторых корневых устройствах отображается мое диалоговое окно с ошибкой ... указывающее, что (proc.exitValue()! = 0), которое не должно происходить на корневом телефоне, если что-то не так с моими командами или с тем, как я Я выполняю их –