Phonegap resolveLocalFileSystemURL no funciona para el contenido de uri en android
Quiero recibir una imagen compartida de la galería de imágenes de Android usando el teléfono Nexus 4 en la versión 5.1.1 de Android. Estoy utilizando phonegap 4.2 y un plugin phonegap WebIntent github plugin y el archivo phonegap plugin doc link .
Texto y enlaces funciona bien, pero cuando traté de compartir una imagen de la galería de Android, obtengo un URI como este:
- Uso de una URL web para SUGGEST_COLUMN_ICON_1 para sugerencias de búsqueda
- Cuando toma la foto get - java.lang.Throwable: file: // Uri expuesto a través de ClipData.Item.getUri ()
- Intellij Android esquema de proyecto ¿URI no está registrado?
- Convierta java.net.URI a android.net.Uri
- Obtener el número de teléfono de la URI de búsqueda
Content: //com.google.android.apps.photos.contentprovider/0/1/content%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F63131/ACTUAL
En lugar de algo como file: /// ….
He intentado utilizar la función window.resolveLocalFileSystemURL para resolver esta url que devuelve correctamente con un objeto fileEntry. Sin embargo, cuando intento utilizarlo para leer el archivo, consigo un error con el código 1000 (véase abajo código y salida).
Curiosamente, si mostrar esta url a través de una etiqueta img, puedo ver la imagen bien.
<img src="" id="test_intent_image"> $('#test_intent_image').attr("src",uri);
Esto sugiere que el problema podría ser la función window.resolveLocalFileSystemURL que no puede manejar el contenido: // … escriba uris correctamente?
===== información de referencia ======
Aquí está el código que estoy usando (nota: he intentado esto con otras funciones de archivo como copyTo () a una carpeta de la aplicación, pero da el mismo error):
document.addEventListener("deviceready", shared, false); document.addEventListener("resume", shared, false); function shared () { window.plugins.webintent.getExtra(window.plugins.webintent.EXTRA_STREAM, function(data) { // data is the value of EXTRA_TEXT if (! data) { return; } window.resolveLocalFileSystemURL( data, function (entry) { console.log('file entry: ' + JSON.stringify(entry, null,3) ); function win(file) { var reader = new FileReader(); reader.onloadend = function (evt) { console.log("file read success"); console.log(evt.target.result); }; reader.readAsText(file); }; function fail (error) { console.log("file read error: " + error.code); }; entry.file(win, fail); }, function (error) { console.log('file error: ' + error); }); }, function() { // There was no extra supplied. // debug_log("web intent getExtra: no extra"); } );
}
Aquí está la salida de la consola del código cuando intenté compartir una imagen de la galería de imágenes:
handle share stream :"content://com.google.android.apps.photos.contentprovider/0/1/content%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F63087/ACTUAL" file entry: { "isFile": true, "isDirectory": false, "name": "ACTUAL", "fullPath": "/com.google.android.apps.photos.contentprovider/0/1/content%3A//media/external/images/media/63087/ACTUAL", "filesystem": "<FileSystem: content>", "nativeURL": "content://com.google.android.apps.photos.contentprovider/0/1/content%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F63087/ACTUAL" } file read error: 1000
Aquí está el filtro de intenciones en el archivo AndroidManifest.xml. Nota: el uso compartido funciona correctamente, pero no es capaz de resolver URL, por lo que probablemente no sea un problema.
<intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="*/*" /> </intent-filter>
- Android - Consultando el ContentProvider de SMS?
- Obtener imagen Uri + miniatura de la foto tomada con la cámara en Android
- Indexación de aplicaciones para Android y enlaces profundos: ¿me equivoqué todo el tiempo?
- El antiguo constructor de SimpleCursorAdapter desaprobó .. realmente?
- Filtro de intenciones para iniciar mi actividad cuando se hace clic en el URI personalizado
- Android: Obtener miniatura de la imagen en la tarjeta SD, dado Uri de la imagen original
- ¿Cuáles son los principios de la construcción de URIs en la plataforma Android?
- Cómo utilizar la actividad no principal para capturar url personalizado en el juego de la unidad?
He estado teniendo el mismo problema, sin solución directa utilizando el plugin de archivo estándar.
He intentado este plugin sin embargo https://github.com/hiddentao/cordova-plugin-filepath que es sólo para el contenido de Android uri.
En su lugar, utiliza esta función y parece que está funcionando.
window.FilePath.resolveNativePath('content://...', successCallback, errorCallback);
Hay un error abierto en el sitio de Córdoba sobre esto.