Из-за ограничения Storage Access Framework в android Мне нужен полный доступ (чтение) к набору файлов, начиная с запуска ACTION_OPEN_DOCUMENT_TREE, чтобы позволить пользователю выбрать каталог.
Проблема
В моем сценарии мне нужно что-то вроде этого:
"file: // directory_choose_by_user / {z} / {x} / {y}. png ".
Когда пользователь выбирает каталог, я могу получить доступ ко всем файлам каталога, но когда я конвертирую URI в строку реального пути, у меня нет разрешения на доступ к файлам. Итак, как я могу создать путь "file: // directory_choose_by_user / {z} / {x} / {y} .png", хотя предоставляется доступ к файлам и папкам.
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivityForResult(Intent.createChooser(intent, "pleas select a directory contains xzy tiles"), request4Raster)
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
switch (requestCode) {
case request4Raster:
Uri tilePathUri = data.getData();
addLocalRasterTile(tilePathUri);
break;
}
}
}
и когда я использую URI пути:
private void addLocalRasterTile(Uri tilePathUri) {
RasterSource topoSource = new RasterSource("testTileSource",
new TileSet("tileset", "file://..../ {z}/{x}/{y}")); // this is my problem/ ... ==> real path of URI
mapboxMap.getStyle().addSource(topoSource);
RasterLayer topoLayer = new RasterLayer("testTileLayer",
"testTileSource");
mapboxMap.getStyle().addLayer(topoLayer);
}