In my app I am using osmdroid for working with map. Map tiles are downloaded and kept in /storage/osmdroid. The application requires permissions WRITE_EXTERNAL_STORAGE and READ_EXTERNAL_STORAGE. If I deny access to storage, map is not shown. Is any way to show map without access to phone memory?
For solving this problem I just added into my application class next code:
@Override
public void onCreate() {
...
org.osmdroid.config.IConfigurationProvider osmConf = org.osmdroid.config.Configuration.getInstance();
File basePath = new File(getCacheDir().getAbsolutePath(), "osmdroid");
osmConf.setOsmdroidBasePath(basePath);
File tileCache = new File(osmConf.getOsmdroidBasePath().getAbsolutePath(), "tile");
osmConf.setOsmdroidTileCache(tileCache);
...
}
This code changes the path of OSM cache from external to internal( getCacheDir()
)
https://github.com/osmdroid/osmdroid/wiki/FAQ
Fresh off the wiki press. Yes you can change the location to application private storage, in which case it should work just fine. Pro tip: set these before loading any map views.
OpenStreetMapTileProviderConstants.setCachePath(...)
OpenStreetMapTileProviderConstants.setCacheSizes(...)
OpenStreetMapTileProviderConstants.setOfflineMapsPath(...)
OpenStreetMapTileProviderConstants.setUserAgentValue(...)
Update: Newer versions of osmdroid, starting in 5.6 and up use the following
Configuration.getInstance().setCachePath(...)
Configuration.getInstance().setCacheSizes(...)
Configuration.getInstance().setOfflineMapsPath(...)
Configuration.getInstance().setUserAgentValue(...)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With