2013-03-07 12 views
12

Czy istnieje sposób uzyskania bezwzględnej ścieżki do obrazu w folderze zasobów phonegap?Uzyskaj bezwzględną ścieżkę do folderu zasobów w PhoneGap

Potrzebuję bezwzględnej ścieżki do dołączenia obrazu do wiadomości e-mail za pomocą wtyczki EmailComposer.

EmailComposer wtyczki chce absolutna ścieżka tak:

/storage/sdcard0/DCIM/Camera/20121124_125210.jpg 

ale obraz chcę dołączyć w folderze mojego majątku i ścieżki tak:

file:///android_asset/www/img/logo.png 

nie działa

Odpowiedz

2

Wygląda na to, że nie jest to możliwe.

Zobacz https://groups.google.com/forum/#!topic/phonegap/Sw2wThOYm8c

Od odpowiedzi Simona w tym wątku Twierdzi ...

„Nie można robić to, co chcesz zrobić. Pliki w katalogu aktywa nie są technicznie na System plików, więc nie są dostępne za pośrednictwem interfejsu API File, oznacza to, że wywołanie okna resolveLocalFileSystemURI() nie zwróci pliku FileEntry, ale zwraca kod błędu o wartości 1, który jest NOT_FOUND_ERR. "

Potrzebujesz absolutnej ścieżki pliku, aby wtyczka załączników do wiadomości e-mail działała. Niestety, jeśli plik znajduje się w folderze asset, nie możesz użyć api pliku cordova, aby uzyskać absolutną ścieżkę.

Istnieje wtyczka do kopiowania plików z folderu zasobów i umieszczania ich na sdcard. Następnie możesz podać dokładną lokalizację tego pliku do wtyczki załączników wiadomości e-mail. Niestety wygląda na to, że poniższa wtyczka jest nieaktualna, jeśli planujesz używać nowszych wersji Cordova.

https://github.com/gkcgautam/Asset2SD

+1

Nie mogę komentować odpowiedzi innych osób, ponieważ nie mam wystarczającej liczby punktów, ale odpowiedź widza jest niepoprawna. Zobacz moją odpowiedź powyżej jako wyjaśnienie, dlaczego jest ona niepoprawna. Być może działało na starszych wersjach Androida i phonegapa, ale zdecydowanie nie działa na cordova/phonegap 2.0.0 +.Ta metoda nie działa niestety dla plików przechowywanych w apk. – njtman

9

Na wypadek, gdyby ktoś nadal szukał rozwiązania. Teraz Cordova implementuje naprawdę łatwy sposób uzyskać aktualny katalog aplikacji (obsługiwane na Android, iOS i BlackBerry 10):

cordova.file.applicationDirectory

Na przykład, jeśli chcesz uzyskać dostęp do pliku audio w katalogu res/audio (w promieniu Twój www), po prostu trzeba napisać, że:

cordova.file.applicationDirectory + 'res/audio/my-audio-file.mp3'

Oto pełna dokumentacja: https://github.com/apache/cordova-plugin-file/#where-to-store-files

+3

Wierzę, że potrzebujesz go jako cordova.file.applicationDirectory + 'www /' + 'res/audio/my-audio-file.mp3' Tak przynajmniej zachowuje się iOS. – edhubbell

+0

Podobnie jak @edhubbell, musiałem też dodać 'www /'. – mauvm

+1

cordova.file.applicationDirectory zwraca mi tylko wyjątek (undefined) – andreimarinescu

Powiązane problemy