private File getFile(String url, final Context context) { if (context != null) { //we assume asset here AssetManager am = context.getAssets(); InputStream inputStream; try { inputStream = am.open(url); final File mbTilesDir; if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) || (!Environment.isExternalStorageRemovable())) { mbTilesDir = new File(context.getExternalFilesDir(null), url); } else { mbTilesDir = new File(context.getFilesDir(), url); } return createFileFromInputStream(inputStream, mbTilesDir.getPath()); } catch (IOException e) { Log.e(TAG, "MBTiles file not found in assets: " + e.toString()); return null; } } try { return new File(url); } catch (Exception e) { Log.e(TAG, "can't load MBTiles: " + e.toString()); return null; } }