Fix possible npe with favourites db
This commit is contained in:
parent
4d518acf23
commit
61758009f6
3 changed files with 31 additions and 26 deletions
|
@ -1,6 +1,7 @@
|
|||
package net.osmand.plus.api;
|
||||
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
public interface SQLiteAPI {
|
||||
|
||||
|
@ -55,8 +56,6 @@ public interface SQLiteAPI {
|
|||
|
||||
void close();
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
public interface SQLiteStatement {
|
||||
|
@ -81,7 +80,9 @@ public interface SQLiteAPI {
|
|||
|
||||
}
|
||||
|
||||
public SQLiteConnection getOrCreateDatabase(String name, boolean readOnly);
|
||||
@Nullable
|
||||
SQLiteConnection getOrCreateDatabase(String name, boolean readOnly);
|
||||
|
||||
public SQLiteConnection openByAbsolutePath(String path, boolean readOnly);
|
||||
@Nullable
|
||||
SQLiteConnection openByAbsolutePath(String path, boolean readOnly);
|
||||
}
|
||||
|
|
|
@ -1,15 +1,17 @@
|
|||
package net.osmand.plus.api;
|
||||
|
||||
import net.osmand.PlatformUtil;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import net.osmand.PlatformUtil;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
|
||||
public class SQLiteAPIImpl implements SQLiteAPI {
|
||||
|
||||
private OsmandApplication app;
|
||||
|
@ -20,6 +22,7 @@ public class SQLiteAPIImpl implements SQLiteAPI {
|
|||
}
|
||||
|
||||
@SuppressLint("InlinedApi")
|
||||
@Nullable
|
||||
@Override
|
||||
public SQLiteConnection getOrCreateDatabase(String name, boolean readOnly) {
|
||||
android.database.sqlite.SQLiteDatabase db = null;
|
||||
|
@ -35,7 +38,6 @@ public class SQLiteAPIImpl implements SQLiteAPI {
|
|||
return new SQLiteDatabaseWrapper(db);
|
||||
}
|
||||
|
||||
|
||||
public class SQLiteDatabaseWrapper implements SQLiteConnection {
|
||||
android.database.sqlite.SQLiteDatabase ds;
|
||||
|
||||
|
@ -206,7 +208,7 @@ public class SQLiteAPIImpl implements SQLiteAPI {
|
|||
|
||||
}
|
||||
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public SQLiteConnection openByAbsolutePath(String path, boolean readOnly) {
|
||||
// fix http://stackoverflow.com/questions/26937152/workaround-for-nexus-9-sqlite-file-write-operations-on-external-dirs
|
||||
|
|
|
@ -663,11 +663,12 @@ public class PoiFiltersHelper {
|
|||
|
||||
private SQLiteConnection openConnection(boolean readonly) {
|
||||
conn = context.getSQLiteAPI().getOrCreateDatabase(DATABASE_NAME, readonly);
|
||||
if (conn.getVersion() < DATABASE_VERSION) {
|
||||
if (conn != null && conn.getVersion() < DATABASE_VERSION) {
|
||||
if (readonly) {
|
||||
conn.close();
|
||||
conn = context.getSQLiteAPI().getOrCreateDatabase(DATABASE_NAME, false);
|
||||
}
|
||||
if (conn != null) {
|
||||
int version = conn.getVersion();
|
||||
conn.setVersion(DATABASE_VERSION);
|
||||
if (version == 0) {
|
||||
|
@ -676,6 +677,7 @@ public class PoiFiltersHelper {
|
|||
onUpgrade(conn, version, DATABASE_VERSION);
|
||||
}
|
||||
}
|
||||
}
|
||||
return conn;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue