Разрешения Android SU IOException - PullRequest
       4

Разрешения Android SU IOException

2 голосов
/ 06 января 2012
if (DownloadManager.STATUS_SUCCESSFUL == c
.getInt(columnIndex)) {
    mProgress.setProgress(70);
    mStatus.setText(R.string.status_backup);
    File dl_path = new File(DownloadManager.COLUMN_LOCAL_URI);
    File og_path = new File("/system/app/app.apk");
    String bu_path = "/sdcard/asdfgsd/backup/app.apk";
    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("echo \"Do I have root?\" >/system/sd/temporary.txt\n");  
        // Close the terminal  
        os.writeBytes("exit\n");  
        os.flush();  
        try {  
            p.waitFor();
            if (p.exitValue() != 255) {  
                // Trying to remount system partition in read-write mode
                p.getOutputStream().write("mount -o r,remount -t yaffs2 /dev/block/mtdblock3 /system".getBytes());
                if (og_path.renameTo(new File(bu_path))) {
                    mProgress.setProgress(90);
                    mStatus.setText(R.string.status_install);
                    dl_path.renameTo(og_path);  } else {
                    mStatus.setText(R.string.status_error_1);
                }
            }
        } catch (InterruptedException e) {  
             mStatus.setText(R.string.status_error_2);  
        }  
    } catch (IOException e) {  
         mStatus.setText(R.string.status_error_3);  
    }   
}

Так что это кусок кода, который должен заменить приложение из / system / app в папку резервной копии, а затем заменить копию, загруженную через DM API в / system / app.Все работает идеально, пока приложение не начнет запрашивать разрешения SU.Как видите, я поместил несколько строк ошибок в случае исключений, чтобы облегчить отладку, и похоже, что он получил исключение ввода-вывода (status_error_3).Что не так с моим кодом?

UPD: SU успешно запрашивает разрешение для моего приложения, поэтому оно должно работать, но это не так.

Заранее спасибо!

...