1

私のAPPは分析を行うためにroot権限を必要とするので、コードを次のように記述します

" Runtime.getRuntime().exec("su");"、次にLinuxコマンドまたはシェルスクリプトを書き込みます。

/data/data/packagename/databases/webview.dbファイルを/sdcard/ testにコピーしようとしました(ソースデータベースファイルは、携帯電話に存在するすべてのアプリデータファイルですが、Javaコードではアプリのファイルしか取得できません)それ自体)、

分析を行いますが、問題は、ソースファイルの名前が同じであるということです。

「<code>cp-r /data/data/*/webview.db / sdcard /test」

ターゲットディレクトリには常にファイルが1つしかないので、Linuxシェルはあまり得意ではありませんでした

コマンドなので、ターゲットディレクトリにコピーしてファイル名を変更する方法を知りたいです。

/sdcard/test/package/webview.dbのようなソースディレクトリ構造を保持します。私は中国人で、

英語はあまり上手ではありません、あなたがそれを理解できることを願っています、ありがとう!

4

2 に答える 2

2

私はこのコードを使用していますが、うまく機能しています!

    public void copyDbToSdcard() {
        try {
            File sd = Environment.getExternalStorageDirectory();
            File data = Environment.getDataDirectory();

            if (sd.canWrite()) {
                String currentDBPath = "//data//" + this.getPackageName()
                        + "//databases//db";
                String backupDBPath = Environment.getExternalStorageDirectory()
                        .toString() + "/Darama1/db";
                File currentDB = new File(data, currentDBPath);
                File backupDB = new File(sd, backupDBPath);

                if (currentDB.exists()) {
                    FileChannel src = new FileInputStream(currentDB)
                            .getChannel();
                    FileChannel dst = new FileOutputStream(backupDB)
                            .getChannel();
                    dst.transferFrom(src, 0, src.size());
                    src.close();
                    dst.close();
                }
            }
        } catch (Exception e) {
        }
    }
于 2013-03-09T11:10:17.640 に答える
0

adbを使用できます。

デバイスをUSB接続したら

あなたが実行します:

adb -s YOURDEVICE pull /data/data/packagename/databases/webview.db

お使いのデバイスが何であるかを知るために

あなたが実行します:

adbデバイス

そうすることで、デスクトップにwebview.dbファイルがあり、好きなように使用できます。

于 2013-03-09T07:03:04.487 に答える