如何保护数据库被其他应用数据库删除

时间:2013-01-31 07:29:53

标签: android sqlite

如果可能,请给我一些想法。

  1. 我使用mydb.db数据库创建了第一个应用程序,并在SD卡中存储了数据库。

  2. 使用相同的数据库名称mydb.db创建第二个应用程序并存储相同的位置。

  3. 运行第一个应用程序后,它正在sdcard中创建数据库,但第二个应用程序删除此数据库并创建自己的数据库。

    如何保护第一个数据库以便通过第二个db删除?

    logcat的:

    01-31 12:22:15.649: D/dalvikvm(25919): GC_EXPLICIT freed 77K, 4% free 6383K/6599K, paused 4ms+6ms
    01-31 12:30:29.389: D/dalvikvm(25919): GC_EXPLICIT freed 10K, 4% free 6377K/6599K, paused 3ms+3ms
    
    01-31 12:31:41.029: I/SqliteDatabaseCpp(6547): sqlite returned: error code = 26, msg = file is encrypted or is not a database, db=/mnt/sdcard/sdcard/appdatabase
    01-31 12:31:41.029: E/SqliteDatabaseCpp(6547): CREATE TABLE android_metadata failed
    01-31 12:31:41.039: E/DefaultDatabaseErrorHandler(6547): Corruption reported by sqlite on database: /mnt/sdcard/sdcard/appdatabase
    01-31 12:31:41.079: E/DefaultDatabaseErrorHandler(6547): deleting the database file: /mnt/sdcard/sdcard/appdatabase
    01-31 12:31:41.409: V/creating DB(6547): its done
    01-31 12:31:41.479: V/TLINE(6547): new: android.text.TextLine@40668ae0
    

1 个答案:

答案 0 :(得分:2)

所有应用程序都可以访问SD卡上的文件(如果SD卡插入另一台机器,则可以访问其他人)。

如果您不希望其他应用访问您的数据,则必须将其存储在内部存储上的应用私有数据目录中。 但是,这也不会阻止它被删除,因为允许用户删除应用程序的数据。