2015-06-19 23 views
5

Android sürüm 5.1.1'de Nexus 4 telefonunu kullanarak Android resim galerisinden paylaşım görüntüsü almak istiyorum. Ben phonegap 4.2 ve bir phonegap WebIntent eklentisi github link ve phonegap dosya eklentisi doc link kullanıyorum.phonegap resolLocalFileSystemURL, android için içerik uri çalışmıyor

Metin ve bağlantılar çalışıyor ama Android galerisinden resim paylaşmaya çalıştım, böyle bir URI olsun:

içeriği: //com.google.android.apps.photos.contentprovider/0/1/içerik% 3A% 2F% 2Fmedia% 2Fexternal% 2Fimages% 2Fmedia% 2F63131/GERÇEK

yerine dosya gibi bir şey

:

ben kullanmaya çalıştı .... /// window.resolveLocalFileSystemURL işlevi, bu url'yi bir dosya ile başarılı bir şekilde döndürür ry nesnesi. Ancak, dosyayı okumak için kullanmaya çalıştığımda, kod 1000 ile bir hata alıyorum (aşağıya kod ve çıktıya bakın).

Bu url'yi bir img etiketi ile görüntülüyorsanız, ilginç bir şekilde görüntüyü görebiliyorum.

<img src="" id="test_intent_image"> 
$('#test_intent_image').attr("src",uri); 

Bu sorun içeriğini işleyemez window.resolveLocalFileSystemURL işlevini olabileceğini düşündürmektedir: // ... tipi düzgün uris?

===== referans bilgileri ====== İşte

I (not kullanıyorum kodudur: Böyle copyTo() bir uygulama klasörüne ama gibi diğer dosya fonksiyonları ile bu çalıştı

: veren aynı hata): resim galerisinden resim paylaşmaya çalıştım

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"); 
    } 
); 

} Burada

kodunun konsol çıkışı 10

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 

AndroidManifest.xml dosyasındaki amaç filtresi. Not: paylaşım gayet iyi çalışıyor, sadece URL'yi çözemiyor, bu muhtemelen bir sorun değil.

<intent-filter> 
<action android:name="android.intent.action.SEND" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:mimeType="*/*" /> 
     </intent-filter> 

cevap

3

Ben standart dosya eklentisi kullanarak doğrudan çözüm ile, aynı sorunu ettirmektedirler.

Bu eklentiyi ancak android içerik uri'sinde olan https://github.com/hiddentao/cordova-plugin-filepath denedim.

Bu işlevi yerine kullanıyorsunuz ve çalışıyor gibi görünüyor.

window.FilePath.resolveNativePath('content://...', successCallback, errorCallback);

+0

Sadece önerinizi denediniz ve harika çalışıyor! Çok teşekkürler dostum! – MicroApper