Howto para obtener el camino real con ACTION_OPEN_DOCUMENT_TREE intención. Lollipop API 21 & 22
Mi aplicación descarga y descomprime un archivo en una carpeta específica:
output = new FileOutputStream(realpath, true); output.write(buffer, 0, bytesRead); ZipFile zipFile = new ZipFile(realpath);
Con el nuevo ACTION_OPEN_DOCUMENT_TREE intención que me gustaría ofrecer al usuario para elegir esa carpeta.
- El evento OnClick en TextView detiene RippleEffect en CardView
- Cómo centrar el menú de acciones en la barra de herramientas
- Grabar audio desde el micrófono usb Android
- La devolución de llamada de Gatt de BLuetooth no funciona con la nueva API de Lollipop
- Haga que la barra de navegación permanezca en la parte superior de cualquier animación de actividad
Al probar los valores recibidos en mi onActivityResult, obtengo un Path como /tree/primary:mynewfolder
, que no es la ruta real física como / sdcard / mynewfolder.
Uri treeUri = data.getData(); String sPath=treeUri.getPath(); Log.v("Path from Tree ", sPath);
Mi método de descomprimir necesita la ruta real:
ZipFile zipFile = new ZipFile(realpath);
¿Cómo obtengo la ruta real como / sdcard / mynewfolder del URI proporcionado en Lollipop (API 21 y 22)?
- ImageView scaleType = "fitXY" no funciona en el dispositivo pre-lollipop dentro de Cardview | Androide
- Android .setColor para Icono grande
- Android Stringblock.get NullPointer Excepción en Lollipop
- Android: ¿Detectar el estado de No molestar?
- Cómo cambiar el color de la barra de herramientas y los colores de la barra de estado de acuerdo con el color de la imagen en el diseño de material android?
- Android 5.0 no es compatible con BitmapFactory.Options inPurgeable
- NullPointerException debido a 'void dalvik.system.CloseGuard.close ()' en lollipop
- Error al intentar crear revelación circular: IllegalStateException: no se puede iniciar esta animación en una vista separada
Proceso de obtener el camino real de URI es igual que antes, pero con un poco de adición:
Uri uri = data.getData(); Uri docUri = DocumentsContract.buildDocumentUriUsingTree(uri, DocumentsContract.getTreeDocumentId(uri)); String path = getPath(this, docUri);
La esencia del método getPath () con métodos intermedios se puede encontrar aquí: getPath ()