首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android根应用程序无法工作:无法从终端或Java删除文件

Android根应用程序无法工作:无法从终端或Java删除文件
EN

Stack Overflow用户
提问于 2012-11-06 13:47:39
回答 2查看 1.2K关注 0票数 3

我正在为clearing browser localstore开发一个简单的根应用程序,稍后可能会添加内置应用程序无法实现的其他功能。我正在使用roottools,根目录似乎可以工作,但是它不能正确地删除目录:

代码语言:javascript
复制
public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        RootTools.debugMode = true;

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.buttonClearBrowser).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                if (RootTools.isAccessGiven()) {
                    RootTools.remount("/data/data/com.android.browser/app_databases/", "RW");
                    Command command = new Command(0,"rm -rf /data/data/com.android.browser/app_databases/") {
                        @Override
                        public void output(int arg0, String arg1) {
                            System.out.println(arg1);
                        }
                    };
                    try {
                        RootTools.getShell(true).add(command).waitForFinish();
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (TimeoutException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

这应该会清除Android中的HTML5本地存储(你不能从浏览器应用程序中清除)。但是,它只给出错误消息:

代码语言:javascript
复制
11-05 21:40:06.650: D/RootTools v2.4(22778): Remounting /data as rw
11-05 21:40:06.650: I/RootTools v2.4(22778): [nodev, relatime, nosuid, rw] AND rw
11-05 21:40:06.650: D/RootTools v2.4(22778): [nodev, relatime, nosuid, rw]
11-05 21:40:06.650: D/RootTools v2.4(22778): Using Existing Root Shell!
11-05 21:40:06.650: D/RootTools v2.4(22778): Sending command(s): rm -rf /data/data/com.android.browser/app_databases/
11-05 21:40:06.660: I/System.out(22778): rm failed for -rf, Read-only file system
11-05 21:40:06.660: D/RootTools v2.4(22778): Command 0finished.

顺便说一句,我在adb shell上得到了同样的错误:

代码语言:javascript
复制
$ su
su
# rm -rf /data/data/com.android.browser/app_databases/http_m.bing.com_0
rm -rf /data/data/com.android.browser/app_databases/http_m.bing.com_0
rm failed for -rf, Read-only file system

/data不应该是只读的,因为这是应用程序设置的地方。电话出什么问题了吗?这是Android 2.2.2,如果有关系的话。具有讽刺意味的是,我可以浏览并删除根模式下的幽灵指挥官的文件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-06 21:20:18

我相信android中的rm命令不会接受-f选项。

要进行确认,请在命令行中尝试不带-f的相同命令

代码语言:javascript
复制
rm -r /data/data/com.android.browser/app_databases/http_m.bing.com_0

致以问候。

票数 2
EN

Stack Overflow用户

发布于 2012-12-03 10:04:29

如上所述,您不需要重新挂载/data,它已经挂载了rw。通常,在挂载/重新挂载时,需要将挂载点的路径作为参数提供:/system/data//mnt/sdcard等。如果提供完整路径/data/data/com.foobar.app/files/foobaz.txt,则在传递给mount命令时会产生错误。

当然,还有一个问题,为什么/data看起来像ro。在运行这段代码之前,你做了什么特别的事情吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13245140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档