RootTools不是最大的。就我個人而言,我建議使用libsuperuser。
有很多原因爲什麼你的文件沒有被刪除。如果您查看RootTools,則不會在路徑中添加引號。所以,如果你的文件包含空格,那麼它不會被刪除。
從RootTools:
它應該是:
Command command = new Command(0, false, "rm -r \"" + target + "\"");
Shell.startRootShell().add(command);
commandWait(Shell.startRootShell(), command);
編輯:
通過Environment.getExternalStorageDir()
返回的路徑不能在shell讀取。在將命令發送到shell之前,您需要更改路徑。
爲了解決這個問題您可以在下面的靜態工廠方法添加到您的項目:
/**
* The external storage path is not readable by shell or root. This replaces {@link
* Environment#getExternalStorageDirectory()} with the environment variable "EXTERNAL_STORAGE".
*
* @param file
* The file to check.
* @return The original file (if it does not start with {@link
* Environment#getExternalStorageDirectory()}
* or a file with the correct path.
*/
@SuppressLint("SdCardPath")
public static File getFileForShell(File file) {
String externalStorage = Environment.getExternalStorageDirectory().getAbsolutePath();
if (!file.getAbsolutePath().startsWith(externalStorage)) {
return file;
}
String legacyStorage = System.getenv("EXTERNAL_STORAGE");
String path;
if (legacyStorage != null) {
path = file.getAbsolutePath().replaceFirst(externalStorage, legacyStorage);
} else {
path = file.getAbsolutePath().replaceFirst(externalStorage, "/sdcard");
}
return new File(path);
}
然後,當你調用RootTools.deleteFileOrDirectory(String target, boolean remountAsRw);
更改文件路徑:
String path = getFileForShell(file).getAbsolutePath();
RootTools.deleteFileOrDirectory(path, true);
你不」 t需要root訪問權限才能刪除內部存儲上的文件。您需要清單中聲明的許可android.permission.WRITE_EXTERNAL_STORAGE
。
libsuperuser
要檢查是否root訪問權限信息,並將顯示root權限提示,你可以調用下面的方法:
boolean isRooted = Shell.SU.available();
圖書館,libsuperuser,無意做RootTools嘗試做的所有事情。如果您選擇使用libsuperuser,則需要將命令發送到shell。
刪除與libsuperuser文件的一個例子:
void delete(File file) {
String command;
if (file.isDirectory()) {
command = "rm -r \"" + file.getAbsolutePath() + "\"";
} else {
command = "rm \"" + file.getAbsolutePath() + "\"";
}
Shell.SU.run(command);
}
請注意,這並不掛載文件系統的讀/寫或者檢查是否rm
可在設備上(東西RootTools不會當你調用deleteFileOrDirectory
) 。
這是一個冗長的答案。如果您還有其他問題,我會建議閱讀任一圖書館項目的文檔。
您可以將路徑粘貼到文件嗎? –
是的,路徑是/storage/emulated/0/logo_large_new.png –