2016-09-30 3 views
0

저는 android 6.0에서 osmdroid 5.4.1 lib를 사용하고 있습니다. 실시간으로 WRITE_EXTERNAL_STORAGE 및 ACCESS_COARSE/FINE_LOCATION 권한을 요청합니다. 그러나 작동하지 맵 :marshmallow에서 osmdroid 및 동적 권한

스트림 디코딩 할 수 없습니다 : java.io.FileNotFoundException을 ... 실패 엽니 다 EACCES를 (사용 권한이 거부)

onRequestPermissionsResult()의 내 주요 활동은 사용자 후 다음 호출

public void initTileSources() { 
    mMapnikTileSource = new XYTileSource(MAPDIR_MAPNIK, 1, MAXZOOMLEVEL, 256, ".png", new String[]{"http://tile.openstreetmap.de/", 
      "http://tile.openstreetmap.org/"}); 
    mMapView.setTileSource(mMapnikTileSource); 

    mSeamarksTileSource = new XYTileSource(MAPDIR_SEAMARK, 1, MAXZOOMLEVEL, 256, ".png", new String[]{ 
      "http://t1.openseamap.org/seamark/", "http://tiles.openseamap.org/seamark/"}); 
    TilesOverlay SeamarksOverlay = new TilesOverlay(new MapTileProviderBasic(getActivity(), mSeamarksTileSource), getActivity()); 
    SeamarksOverlay.setLoadingBackgroundColor(Color.TRANSPARENT); 
    mMapView.getOverlays().add(SeamarksOverlay); 
    // mMapView.invalidate(); 
} 

맵뷰 MapView 만 SeamarksOverlay (openseamap)를 표시하지만 주요 mMapnikTileSource (OpenStreetMap에) : 저장 쓰기 권한을 부여했습니다. 지도 뷰가 모든 것을 올바르게 표시하려면 앱을 다시 시작해야합니다.

비슷한 question을 stackoverflow에서 보았지만 아직 답변되지 않았습니다.

아무도 도와 줄 수 있습니까? 미리 감사드립니다.

답변

0

다른 연결된 문제와 동일한 대답을 드리겠습니다. 지도 뷰가로드되고 표시되기 전에 권한을 요청해야합니다.

이 중 하나 또는 타일 저장소 캐시의 경로는 읽기 전용입니다. 일부 안드로이드 장치의 경우 Environment.getExternalStorageDir은 읽기 전용 파티션을 반환합니다. 이유는 모르겠지만 확실히 문제를 일으킬 것입니다. 클래스로 오버라이드 할 수 있습니다. OpenStreetMapTileProviderConstants

관련 문제