12

मैं गैलरी से एक छवि का चयन करने के लिए ACTION_PICK इरादा का उपयोग कर रहा हूं। "पोस्ट", "प्रोफ़ाइल तस्वीरें" आदि जैसे कुछ एल्बम Picasa आइकन के साथ चिह्नित हैं। इस तरह के एलबम से छवियों के लिए मैं एक URI इस के समान मिलती है:यूआरआई से पिकासा छवि कैसे लोड करें?

content://com.google.android.gallery3d.provider/picasa/item/5769844615871490082 

मुझे कोई समस्या नहीं के साथ ContentResolver और BitmapFactory का उपयोग कर इस URI से एक छवि लोड कर सकते हैं:

final InputStream ist = context.getContentResolver().openInputStream(intent.getData()); 
final Bitmap bitmap = BitmapFactory.decodeStream(ist); 

लेकिन मैं लोड करने में असमर्थ हूँ एप्लिकेशन को पुनरारंभ करने के बाद संग्रहीत यूआरआई का उपयोग कर एक छवि। जब decodeStream() कहा जाता है मैं इस हो रही है:

03-11 12:34:56.502: A/libc(1172): Fatal signal 11 (SIGSEGV) at 0x00000408 (code=1), thread 1462 03-11 12:34:56.502: 
    W/ActivityManager(478): Permission Denial: opening provider 
    com.android.gallery3d.provider.GalleryProvider from 
    ProcessRecord{41cdd220 1172:com.mycompany.myapp/u0a10085} 
    (pid=1172, uid=10085) requires 
    com.google.android.gallery3d.permission.GALLERY_PROVIDER or 
    com.google.android.gallery3d.permission.GALLERY_PROVIDER 

मैं मैनिफ़ेस्ट फ़ाइल को

<uses-permission android:name="com.google.android.gallery3d.permission.GALLERY_PROVIDER"/> 

जोड़ने की कोशिश की, लेकिन यह मदद नहीं की।

मुझे लगता है कि मेरी समस्या this one के समान है, लेकिन कोई समाधान नहीं दिया गया है, केवल एक कामकाज है। क्या संग्रहीत यूआरआई तक पहुंचने की अनुमति का अनुरोध करना संभव है?

+2

सामग्री यूआरआई समय-सीमित है, और ACTION_PICK के संदर्भ में केवल काम सबसे अधिक संभावना कर रहे हैं की तरह इनपुट स्ट्रीम खोलने का प्रयास करें। आपको अपने ऐप में छवि को कैश करने की आवश्यकता होगी, क्योंकि इस बात की कोई गारंटी नहीं है कि सामग्री बाद में भी उपलब्ध है। – 323go

+0

मैं कसम खाता हूं कि एक ही समस्या में आईओ गोना दौड़ें, फिर से पसंदीदा – JRowan

+0

क्या आपको इसके लिए कोई समाधान मिला? मैं भी ऐसी ही समस्या का सामना कर रहा हूँ। –

उत्तर

4

इस

ContentResolver res = context.getContentResolver(); 
Uri uri = Uri.parse(intent.getData().toString()); 
res.openInputStream(uri); 
संबंधित मुद्दे