您好我一直在寻找删除或重命名手机内部存储空间中特定文件的方法。具体来说,我的目标是waze文件夹中的文件,它们位于内部存储的根文件夹中。正如我所说,我寻找更多关于此的信息,但没有任何对我有用,所以我认为我的错误可能在我正在使用的路径中。这是我的代码:
重新开始:
file_Path = "/data/data/waze"
File from = new File(file_Path, "currentFileName");
File to = new File(file_Path, "newFilename");
from.renameTo(to); //this method returns me False
要删除:
file_Path ="/data/data/waze/file"
File file = new File(file_Path);
boolean deleted = file.delete();
我尝试了很多方法来做到这一点,但这是我认为接近它的方法。所以如果你们中的任何人都能指出我的错误,我会感谢你们!来自哥斯达黎加的拥抱!
答案 0 :(得分:7)
除了您自己的应用程序文件之外,您对internal storage上的文件没有读取或写入权限。您无法重命名或删除其他应用中的文件,例如Waze。
例外情况是,在root设备上,您可以要求以超级用户权限派生进程,并且这些进程将具有设备范围的读/写访问权限。
答案 1 :(得分:1)
要完成@CommonsWare答案,您可以检查设备是否已植根,然后执行方法或其他操作。
这是一个例子,
取自:http://www.stealthcopter.com/blog/2010/01/android-requesting-root-access-in-your-app/
.//img[contains(@onclick, 'EditResource')]
或者你可以看看:
并且,在您的清单中也使用以下权限:
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) {
// TODO Code to run on success
toastMessage("root");
}
else {
// TODO Code to run on unsuccessful
toastMessage("not root");
}
} catch (InterruptedException e) {
// TODO Code to run in interrupted exception
toastMessage("not root");
}
} catch (IOException e) {
// TODO Code to run in input/output exception
toastMessage("not root");
}
或者在Github上有一个很好的例子: