2009-02-15 13 views
41

आईफोन की तरह यूआईएममेज पिकर कंट्रोलर है जो उपयोगकर्ता को डिवाइस पर संग्रहीत चित्रों तक पहुंचने देता है, क्या हमारे पास एंड्रॉइड एसडीके में समान नियंत्रण है?मेरे एंड्रॉइड ऐप में चित्र ऐप से चित्रों को एक्सेस करें

धन्यवाद।

+1

मेरा मानना ​​है कि एक सामग्री प्रदाता android.provider और एक वर्ग कहा जाता MediaStore.Images कहा जाता है के बाद आप क्या कर रहे हैं [अधिक जानकारी यहां पाया जा सकता है।] (Http://developer.android.com/reference/android/provider/package-summary.html) – GregD

उत्तर

83

आप startActivityForResult का उपयोग कर सकते हैं, जो उस कार्य में गुजर रहा है जो आप पूरा करना चाहते हैं और डेटा स्रोत को क्रियान्वित करने के लिए करते हैं। Intent.ACTION__PICK और कोई डेटा स्रोत वाले चित्र: स्थानीय डिवाइस पर छवियों के लिए android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI या android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI एसडी कार्ड पर छवियों के लिए

आप के लिए सौभाग्य से, एंड्रॉयड उठा बातों के लिए एक कार्य भी शामिल है।

कॉल पिक कार्रवाई में startActivityForResult गुजर और छवियों आप उपयोगकर्ता इस तरह से चयन करना चाहते हैं:

startActivityForResult(new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), SELECT_IMAGE); 

फिर onActivityResult ओवरराइड उपयोगकर्ता के लिए सुनने के लिए एक चयन किया था।

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == SELECT_IMAGE) 
    if (resultCode == Activity.RESULT_OK) { 
     Uri selectedImage = data.getData(); 
     // TODO Do something with the select image URI 
    } 
} 

एक बार आपके पास छवि उरी होने के बाद आप छवि का उपयोग करने के लिए इसका उपयोग कर सकते हैं और जो भी आपको इसके साथ करने की ज़रूरत है।

+0

इसका उपयोग करते समय मेरी निष्क्रियता को बुलाया नहीं जा रहा है ... कोई सुझाव? मैंने बाहरी स्टोरेज अनुमति सेट की है –

+0

यह देखने के लिए कि आपने चयनित इमेज वैरिएबल से फ़ाइल पथ को कैसे पुनर्प्राप्त किया है, यह जवाब देखें: http://stackoverflow.com/a/10474167 – Tiago

22

तुम भी कर सकते हैं:

Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
photoPickerIntent.setType("image/*"); 
startActivityForResult(photoPickerIntent, 1); 

यह सब भंडार भर में छवियों का चुनाव करेगा।

+0

क्या कैमरा अतिरिक्त स्रोत के रूप में दिखाना संभव है यहाँ? – jjxtra

+0

यदि आप प्रारंभिक 1 को प्रारंभिकता ForResult में पास करते हैं, तो आपActivityResult() के भीतर अनुरोध कोड की पहचान कैसे करते हैं? –

1

बस रेटो द्वारा दिए गए उत्तर का एक अपडेट। आप ऐसा कर सकता है छवि को मापना:

private String getPath(Uri uri) { 
String[] data = { MediaStore.Images.Media.DATA }; 
CursorLoader loader = new CursorLoader(context, uri, data, null, null, null); 
Cursor cursor = loader.loadInBackground(); 
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
cursor.moveToFirst(); 
return cursor.getString(column_index); 
} 
संबंधित मुद्दे