3

こんにちは、2.3.3 用の Android アプリケーションをビルドしているときに、次のエラーが発生しました。

ファイルにアクセスしようとしました:

private static final String src_msg = "/data/data/com.whatsapp/databases/msgstore.db";
private static final String src_wa = "/data/data/com.whatsapp/databases/wa.db";

私は前に su をします:

Process process = Runtime.getRuntime().exec("su");

cp コマンドでファイルを sdcard にコピーしようとしました -> 成功しませんでした ファイルが存在するかどうかを確認しようとしましたnew File(src_msg).exists()-> 成功しませんでした

マニフェストで次の権限を使用します。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

ここで他に何が欠けていますか?ルートを許可するポップアップが表示され、受け入れられました。

4

1 に答える 1

1

それを試してみてください:(ramdroidに感謝します)

private boolean run(boolean runAsRoot, String cmd) {

String shell = runAsRoot ? "su" : "sh";

int exitCode = 255;
Process p;
try {

    p = Runtime.getRuntime().exec(shell);
    DataOutputStream os = new DataOutputStream(p.getOutputStream());

    os.writeBytes(cmd + "\n");
    os.flush();

    os.writeBytes("exit\n");
    os.flush();

    exitCode = p.waitFor();

} catch (IOException e1) {
        Log.e("Exception", e1.toString());
} catch (InterruptedException e) {
        Log.e("Exception", e.toString());
}
return (exitCode != 255);

}

public boolean copyFile() {
return run(true, "busybox cp /data/FILE TO COPY space DRECTORY TO COPY");
} 

YOUR_DIRECTORYとDIRECTORYTOCOPYのみを必要なものに変更してください。

于 2012-09-07T13:50:28.163 に答える