From 656cbc59fc2449ab5f910f87b0ba599894927b6e Mon Sep 17 00:00:00 2001 From: max-klaus Date: Fri, 12 Jun 2020 16:22:24 +0300 Subject: [PATCH] Fix indexTerrainFiles crash --- .../osmand/plus/srtmplugin/TerrainLayer.java | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainLayer.java b/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainLayer.java index bdfe5e4772..8f75c68259 100644 --- a/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainLayer.java +++ b/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainLayer.java @@ -82,21 +82,28 @@ public class TerrainLayer extends MapTileLayer { File tilesDir = app.getAppPath(IndexConstants.TILES_INDEX_DIR); File cacheDir = app.getCacheDir(); // fix http://stackoverflow.com/questions/26937152/workaround-for-nexus-9-sqlite-file-write-operations-on-external-dirs - sqliteDb = SQLiteDatabase.openDatabase( - new File(cacheDir, mode == HILLSHADE ? HILLSHADE_CACHE : SLOPE_CACHE).getPath(), - null, SQLiteDatabase.ENABLE_WRITE_AHEAD_LOGGING - | SQLiteDatabase.CREATE_IF_NECESSARY ); - if (sqliteDb.getVersion() == 0) { - sqliteDb.setVersion(1); + try { + sqliteDb = SQLiteDatabase.openDatabase( + new File(cacheDir, mode == HILLSHADE ? HILLSHADE_CACHE : SLOPE_CACHE).getPath(), + null, SQLiteDatabase.ENABLE_WRITE_AHEAD_LOGGING + | SQLiteDatabase.CREATE_IF_NECESSARY); + } catch (RuntimeException e) { + log.error(e.getMessage(), e); + sqliteDb = null; } - sqliteDb.execSQL("CREATE TABLE IF NOT EXISTS TILE_SOURCES(filename varchar2(256), date_modified int, left int, right int, top int, bottom int)"); + if (sqliteDb != null) { + if (sqliteDb.getVersion() == 0) { + sqliteDb.setVersion(1); + } + sqliteDb.execSQL("CREATE TABLE IF NOT EXISTS TILE_SOURCES(filename varchar2(256), date_modified int, left int, right int, top int, bottom int)"); - Map fileModified = new HashMap(); - Map rs = readFiles(app, tilesDir, fileModified); - indexCachedResources(fileModified, rs); - indexNonCachedResources(fileModified, rs); - sqliteDb.close(); - resources = rs; + Map fileModified = new HashMap(); + Map rs = readFiles(app, tilesDir, fileModified); + indexCachedResources(fileModified, rs); + indexNonCachedResources(fileModified, rs); + sqliteDb.close(); + resources = rs; + } return null; }