【发布时间】:2023-03-13 16:18:01
【问题描述】:
我正在尝试开发一个 android 应用程序,它可以在不生根的情况下删除默认浏览器的搜索历史,但我被卡住了。这是我的源代码
File file = new File("data/data/com.android.browser/databases/browser.db");
try {
String content = "";
if(!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(content);
bw.close();
Toast.makeText(MainActivity.this, "History Deleted From Default Browser", Toast.LENGTH_LONG).show();
System.out.println("Done");
} catch (IOException e) {
e.printStackTrace();
}
因为我知道浏览器的历史记录将存储在“browser.db”文件中,只有当我通过 adb shell 更改命令提示符中 browser.db 文件的权限时,我才能清除历史记录,例如“chmod 777 data/data/ com.android.browser/databases/browser.db" 但是我每次都需要这样做,我想在我的应用程序源代码中这样做,我也尝试了 Runtime.exec() 方法来执行 adb shell,实际上 History Eraser 应用程序可以在没有 root 权限的情况下擦除默认浏览器的历史记录,可以请任何人帮助我解决这个谜团。提前致谢。
【问题讨论】:
-
你太想打破沙盒了——那是行不通的!检查http://stackoverflow.com/questions/7235741/programmatically-erase-android-browser-cache-history-etc-with-root?rq=1
-
但是有很多历史清理应用程序,例如 History Eraser,可以在不生根 @LordT 的情况下擦除。如果他们能做到,就必须有一些正确的方法?
-
来自 JNI,您可以运行
system()调用,但不确定是否有效 -
@SIGSEGV 即使我们运行我们也可能需要 root 访问权限,不是吗?最终用户害怕 root 他们的手机,所以我的目标是应用程序在各种环境中工作,但我我卡在这里。无论如何感谢您的时间。 SIGSEGV
-
@ChethanShetty 不,如果你能够在不生根的情况下运行
adb shell pm clear com.android.browser,那么我希望来自 jni 的system()调用会起作用。
标签: android