私は自分のAndroidアプリでsqliteに取り組んでいます。
私はこのばかげた質問をしていますが、効果的です。
- 内部ストレージに保存されているデータベースを誰かがコピーできますか?
- データベースを作成するためのSDカードはどのくらい安全ですか?
SD にアクセスできる人なら誰でも、技術的には sqlite ファイルをコピーできます。内部ストレージの安全性は十分ではないと思います (デバイスをルート化して管理者アクセスを取得できるため、事実上すべての操作を行うことができます)。とにかく、これはあなたのsqliteファイルを内部ストレージにコピーする方法に関するリンクです
2 番目の質問: あまり安全ではありません。可能であれば、内部ストレージを使用してください。より安全です。どのプログラムでも SD カード上のあらゆるものを編集できるため、カードをコンピュータに挿入し、sqlite データベースをマウントするだけで、読み取り/書き込み/編集を含むデータベースへのフル アクセスが可能になります。
内部ストレージは理論的には安全ですが、ルート化されたデバイスを持っている人は、そこに入ることができるかもしれません. ただし、それほど多くの人ではないので、注意が必要です。
すべての試みに対して安全な解決策を本当に見つけなければならない場合は、暗号化されたデータベースを検討することをお勧めします。
最初の質問: 確かに、ファイルをコピーするのと同じように、データベースをコピーできます。
データベースを SD カードにコピーできますが、安全ではありません。SD カードを読み取る任意のアプリケーションまたは外部デバイスは、SD カードにアクセスできます。
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();
}
}