0

私は自分のAndroidアプリでsqliteに取り組んでいます。

私はこのばかげた質問をしていますが、効果的です。

  1. 内部ストレージに保存されているデータベースを誰かがコピーできますか?
  2. データベースを作成するためのSDカードはどのくらい安全ですか?
4

4 に答える 4

0

SD にアクセスできる人なら誰でも、技術的には sqlite ファイルをコピーできます。内部ストレージの安全性は十分ではないと思います (デバイスをルート化して管理者アクセスを取得できるため、事実上すべての操作を行うことができます)。とにかく、これはあなたのsqliteファイルを内部ストレージにコピーする方法に関するリンクです

于 2013-02-01T11:51:57.497 に答える
0

2 番目の質問: あまり安全ではありません。可能であれば、内部ストレージを使用してください。より安全です。どのプログラムでも SD カード上のあらゆるものを編集できるため、カードをコンピュータに挿入し、sqlite データベースをマウントするだけで、読み取り/書き込み/編集を含むデータベースへのフル アクセスが可能になります。

内部ストレージは理論的には安全ですが、ルート化されたデバイスを持っている人は、そこに入ることができるかもしれません. ただし、それほど多くの人ではないので、注意が必要です。

すべての試みに対して安全な解決策を本当に見つけなければならない場合は、暗号化されたデータベースを検討することをお勧めします。

最初の質問: 確かに、ファイルをコピーするのと同じように、データベースをコピーできます。

于 2013-02-01T11:48:23.117 に答える
0

データベースを SD カードにコピーできますが、安全ではありません。SD カードを読み取る任意のアプリケーションまたは外部デバイスは、SD カードにアクセスできます。

于 2013-02-01T11:49:25.250 に答える
0

SD カードが十分に安全でないため、しばらくしてからデータベースをサーバーに送信する必要があります。そして、DB フォルダー全体をコピーするためのコードの下。

public static void copyDirectoryOneLocationToAnotherLocation(File sourceLocation, File targetLocation)
        throws IOException {

    if (sourceLocation.isDirectory()) {
        if (!targetLocation.exists()) {
            targetLocation.mkdir();
        }

        String[] children = sourceLocation.list();
        for (int i = 0; i < sourceLocation.listFiles().length; i++) {

            copyDirectoryOneLocationToAnotherLocation(new File(sourceLocation, children[i]),
                    new File(targetLocation, children[i]));
        }
    } else {

        InputStream in = new FileInputStream(sourceLocation);

        OutputStream out = new FileOutputStream(targetLocation);

        // Copy the bits from instream to outstream
        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
        }
        in.close();
        out.close();
    }

}
于 2013-02-01T11:59:19.747 に答える