Java SQLite SELECT在Android API 21中不再起作用,但在Android API 18中起作用

Java SQLite SELECT在Android API 21中不再起作用,但在Android API 18中起作用,java,android,sqlite,android-5.0-lollipop,Java,Android,Sqlite,Android 5.0 Lollipop,我已经编写了一个应用程序,可以访问外部存储器上的SQLite数据库。该应用程序与我的Nexus4和模拟器上的Android 4.4配合使用效果良好。自从我将手机升级到安卓5后,它不再显示SQLite数据库中的任何数据。API 21上的仿真器也没有显示任何数据 没有引发错误或异常。在API 21上,数据库游标只是空的 数据库是这样打开的: String path = myContext.getExternalFilesDir(null).getAbsolutePath() + File.separ

我已经编写了一个应用程序,可以访问外部存储器上的SQLite数据库。该应用程序与我的Nexus4和模拟器上的Android 4.4配合使用效果良好。自从我将手机升级到安卓5后,它不再显示SQLite数据库中的任何数据。API 21上的仿真器也没有显示任何数据

没有引发错误或异常。在API 21上,数据库游标只是空的

数据库是这样打开的:

String path = myContext.getExternalFilesDir(null).getAbsolutePath() + File.separator + DB_NAME;
myDataBase = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READWRITE);
Cursor cur = myDataBase.rawQuery("SELECT * FROM employee WHERE employee match ? " +
    "ORDER BY firstname, lastname LIMIT 100",
    new String[] { "*" + queryString+ "*" });

while (cur.moveToNext()) {
    persons.add(getPerson(cur)); // never reaches this since API 21
}
cur.close();
查询的执行方式如下:

String path = myContext.getExternalFilesDir(null).getAbsolutePath() + File.separator + DB_NAME;
myDataBase = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READWRITE);
Cursor cur = myDataBase.rawQuery("SELECT * FROM employee WHERE employee match ? " +
    "ORDER BY firstname, lastname LIMIT 100",
    new String[] { "*" + queryString+ "*" });

while (cur.moveToNext()) {
    persons.add(getPerson(cur)); // never reaches this since API 21
}
cur.close();
从18岁到21岁发生了什么变化


完整的源代码可以在这里找到:

Android 5中的SQLite MATCH与Manifest中的Android target sdk中的工作方式不同?使用21和18进行了尝试,调用dbHelper后的结果相同?应用程序是否仍在访问路径?请参见此。这可能是因为Android棒棒糖为SQLite引入了重大变化: