Как установить rw - r - r-разрешения программно?
Я разрабатываю приложение, которое может восстановить данные приложений в /data/data/{packageName}. После восстановления файлов я устанавливаю разрешения на rw-r-- 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 r-x".
Итак, как я могу установить разрешения на rw-r-- r--?
3 ответов
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 вы также можете вызвать: setReadable(), setWritable() и setExecutable()