Android 为应用程序I don'禁用WAL;你没有你的源代码吗?

Android 为应用程序I don'禁用WAL;你没有你的源代码吗?,android,sqlite,Android,Sqlite,我有一个应用程序的apk,与Android 9不兼容,因为它现在强制WAL而不是日记模式。有没有办法在不访问应用程序源代码的情况下禁用WAL 如果你无法控制应用程序的源代码,那么我认为你无法更改模式 也就是说,应用程序不工作的最可能原因是使用了预先存在的数据库(从资产文件夹复制) 如果是这样,您可以访问应用程序正在运行的另一台设备(即低于Android 9的设备),并且您可以访问数据库文件(可能需要根设备)。删除安卓9设备上的-shm和-wal文件后,很有可能从中复制该数据库文件(同样,它可能需

我有一个应用程序的apk,与Android 9不兼容,因为它现在强制WAL而不是日记模式。有没有办法在不访问应用程序源代码的情况下禁用WAL

如果你无法控制应用程序的源代码,那么我认为你无法更改模式

也就是说,应用程序不工作的最可能原因是使用了预先存在的数据库(从资产文件夹复制)

如果是这样,您可以访问应用程序正在运行的另一台设备(即低于Android 9的设备),并且您可以访问数据库文件(可能需要根设备)。删除安卓9设备上的-shm和-wal文件后,很有可能从中复制该数据库文件(同样,它可能需要根目录)会起作用(尽管会使用wal),但问题很可能纯粹是复制现有数据库

  • 我用5.0和10.0设备(模拟器)做了一个测试,效果很好
但是,如果您确实可以访问该代码:-

您可以使用SQLiteDatabase方法。如果使用SQLiteOpenHelper的子类,则可以通过重写onConfigure方法来执行此操作


如果不使用SQLiteOpenHelper的子类,那么可以使用PRAGMA设置日志模式。

在第一个解决方案中,它是否必须是完全相同的数据库的副本?我的意思是,可能是同一个应用程序的数据库,但用户不同吗?@JobFranco如果数据没有加密,那么任何副本都可以工作。我不知道备份应用程序是否有用,这不是我研究过的领域。有没有办法在操作系统上禁用它?@JobFranco可能,但很可能不简单,你可能会从