Android 如何将osmdroid默认路径更改为extSdCard?

Android 如何将osmdroid默认路径更改为extSdCard?,android,openstreetmap,osmdroid,Android,Openstreetmap,Osmdroid,我想知道,如何将osmdroid默认路径更改为extSdCard路径? 根据,可以使用: Configuration.getInstance().SetOsmdroidBasePath(); 我相信在运行我的项目时,它会自动启动: StorageUtils.getStorage().GetAbsolutePath(),“osmdroid” 我尝试使用下面的命令,但我的地图不显示平铺 Configuration.getInstance().setOsmdroidBasePath(new File

我想知道,如何将osmdroid默认路径更改为extSdCard路径?
根据,可以使用:

Configuration.getInstance().SetOsmdroidBasePath();
我相信在运行我的项目时,它会自动启动:
StorageUtils.getStorage().GetAbsolutePath()
,“osmdroid”

我尝试使用下面的命令,但我的地图不显示平铺

Configuration.getInstance().setOsmdroidBasePath(new File("/mnt/extSdCard/osmdroid"));
当我使用以下命令调试代码时:
Configuration.getInstance().getOSMDROIDBSepath().GetPath()

它提供了正确的路径


有必要重新加载我的地图吗?

如果用户在创建地图视图之前授予了存储的运行时权限,那么它应该可以正常工作。您可能需要检查以确保可以写入该路径。Android很奇怪,而且常常仅仅因为路径可用并不意味着您可以对其进行写入。
StorageUtils
类可以帮助您找到可用的路径,并且应该能够确定哪个路径是可写的。然而,这是不完美的。路径可能因设备而异,结果可能不可预测。查看这一点可能会对您有所帮助。

对于OSM 6.x版,您可以使用以下代码

@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);
    ...
}

嗨,间谍,我试图完成你的建议,但没有发生错误。但是如果没有在地图上显示我的分幅,则需要保存或加载在Configuration.getInstance()方法中找到的分幅。是的,当我列出在目录中找到的文件时,它会正确地显示给我。使用StorageUtils.getAllStorageLocations().get(“SD卡”).getPath()配置.getInstance().setOsmdroidBasePath(新文件(StorageUtils.getAllStorageLocations().get(“SD卡”).getPath(),“osmdroid”);我在将瓷砖指向脱机状态时出错,感谢您的帮助。