3

私はブラウザ localstore をクリアするための単純なルートアプリに取り組んでおり、後で組み込みアプリでは不可能な他の機能を追加する可能性があります。roottoolsを使用しています。ルートは機能しているようですが、ディレクトリが適切に削除されません。

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 ローカル ストレージがクリアされます (ブラウザ アプリからはクリアできません)。ただし、エラーメッセージのみが表示されます:

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シェルでも同じエラーが発生します:

$ 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 です。皮肉なことに、Ghost Commander をルート モードで使用して、ファイルを参照して削除することができます。

4

2 に答える 2

2

Androidのコマンドではオプション-fが受け入れられないと思います。rm

それを確認するには、コマンドラインから同じコマンドを試してください-f:

rm -r /data/data/com.android.browser/app_databases/http_m.bing.com_0

よろしく。

于 2012-12-06T13:20:17.503 に答える
1

上記のように、再マウントする必要はありません。/dataすでにマウントされていrwます。一般に、マウント/再マウントするときは、パラメータとしてマウントポイントへのパスを指定する必要があります:/system、、、など。フルパスを指定すると、コマンドに渡されたときにエラーが発生します。/data//mnt/sdcard/data/data/com.foobar.app/files/foobaz.txtmount

もちろん、なぜ/dataそうなるのかという問題がありますro。このコードを実行する前に何か特別なことをしましたか?

于 2012-12-03T02:04:29.307 に答える