Android, как установить программные права на rw- r-r-

Я разрабатываю приложение, которое может восстановить данные приложений обратно / data / data / {packageName}. После восстановления файлов я устанавливаю разрешения на rwrr– r–. Я установил его так:

public int chmod(File path, int mode) throws Exception { Class fileUtils = Class.forName("android.os.FileUtils"); Method setPermissions = fileUtils.getMethod("setPermissions", String.class, int.class, int.class, int.class); return (Integer) setPermissions.invoke(null, path.getAbsolutePath(), mode, -1, -1); } 

И вызов chmod(file, 644);

Но когда я проверяю разрешения этих файлов в файловом проводнике, он показывает мне «— rwx rx».

Итак, как я могу установить разрешения для rwrr– r–?

     Process process = null; DataOutputStream dataOutputStream = null; try { process = Runtime.getRuntime().exec("su"); dataOutputStream = new DataOutputStream(process.getOutputStream()); dataOutputStream.writeBytes("chmod 644 FilePath\n"); dataOutputStream.writeBytes("exit\n"); dataOutputStream.flush(); process.waitFor(); } catch (Exception e) { return false; } finally { try { if (dataOutputStream != null) { dataOutputStream.close(); } process.destroy(); } catch (Exception e) { } } 

    Значение неверно, правильный – 420 (420 десятичных знаков – 644 восьмеричные). В качестве альтернативы вы можете добавить ведущее 0 чтобы сделать его восьмеричным буквалом java. т.е.

     chmod(destinationFile, 0644) 

    Вы должны установить эти разрешения (rw-r– r–) в файле, используя:

     path.setReadOnly(true); //Sets all permissions for every owner back to read-only path.setWritable(true); //Sets the owner's permissions to writeable 

    Где path – это ваш объект File .

    Вам не нужно использовать FileUtils с отражением для установки разрешений на файл. Вы можете просто использовать вспомогательные методы в классе File . С помощью файла вы также можете вызвать: setReadable () , setWritable () и setExecutable ()