1

私はAndroidマーケットにAndroidアプリケーションを持っています.このアプリケーションは、誰でも読み書きできるモードのsqliteデータベースで作成されています。SQLite データベースには、ユーザー固有の情報は保存されません。ただし、ルート化されたハンドセットで /data/data/packagename/databases/ を開くと、ほとんどすべてのアプリケーションで、これらのファイルが誰でも読み取り可能/書き込み可能であることがわかります。

アプリケーションの SQLite データベースをプライベート モードに変更しました。その後、データベース ファイルのアクセス許可が、誰でも読み取り可能/書き込み可能に変更されました。ただし、「database-journal」ファイルのアクセス許可は変更されませんでした。

これは Android の問題ですか。アプリケーションがデータベース ジャーナルのアクセス許可をアップグレードしても、プライベート モードで作成されたメイン データベースでさえ変更されません。

ほとんどの場合、このジャーナル ファイルは空のファイルです。上記の問題を解決するための提案はありますか?

4

1 に答える 1

2

MODE_WORLD_WRITEABLEデータベースを作成すると、デバイス上のすべてのアプリは、そのアプリに権限がない場合でも、データベースを削除したり、開いたり、データを挿入/読み取ったり、コピーしたりできます。WRITE_EXTERNAL_STORAGE

ジャーナルは sqlite によって作成されます。ファイルが存在すると、sqlite がファイルのアクセス許可を変更する理由はありません。データベース ファイルを削除しても、おそらくジャーナルも削除されないため、問題が発生する可能性があります。

データベースを開く前にジャーナルファイルを削除するか、必要に応じてchmod/File.setWritable()それを削除すると、問題が修正されるはずです。

于 2012-04-30T14:40:00.820 に答える