2015-06-23 3 views
8

मैं का उपयोग कर एंड्रॉयड गैलरी से अधिक चित्रों का खोलना चाहते हैं अनुमति देता है "Intent.EXTRA_ALLOW_MULTIPLE" लक्ष्य फ़िल्टर:एंड्रॉयड: Intent.EXTRA_ALLOW_MULTIPLE केवल एकल उठा

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { 
    final Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
    intent.setType("image/*"); 
    intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); 
    intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true); 
    startActivityForResult(Intent.createChooser(intent, "Add images"), SELECT_MULTIPLE_IMAGES); 
} 

लेकिन जो कुछ भी एप्लिकेशन का उपयोग मैं (देशी गैलरी, QuickPic एप्लिकेशन) , मैं केवल एक ही तस्वीर का चयन कर सकता हूं। परीक्षण डिवाइस एंड्रॉइड 5.1 चला रहा है।

मैं एकाधिक छवियों को कैसे चुन सकता हूं?

+1

'EXTRA_ALLOW_MULTIPLE' किसी भी' Intent' अतिरिक्त के साथ के रूप में, एक अनुरोध है, न कोई आदेश है। ऐसी कोई आवश्यकता नहीं है कि आप जिस गतिविधि को शुरू कर रहे हैं उनका सम्मान करें। – CommonsWare

+0

क्या आप मौके से एक गैलरी ऐप जानते हैं जो 'EXTRA_ALLOW_MULTIPLE'' पैरामीटर का उपयोग करके बहु-छवि पिकिंग का समर्थन करता है? – Hyndrix

+0

मेरे सिर के शीर्ष पर नहीं, क्षमा करें। – CommonsWare

उत्तर

11

यह वर्तमान में मेरे हाल ही की लाइव आवेदन में से एक है जो 4.4 और बाद के लिए गैलरी का उपयोग कर छवियों के चयन को शामिल किया गया में काम कर रहा है अपनी खुद की कस्टम गैलरी लिखने के ऊपर और नीचे।

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
    try { 
     Intent intent = new Intent(); 
     intent.setType("image/*"); 
     intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); 
     intent.setAction(Intent.ACTION_GET_CONTENT); 
     startActivityForResult(Intent.createChooser(intent, "Select Picture"), SELECT_IMAGE_REQUEST_GALLERY); 
    }catch(Exception e){ 
     Intent photoPickerIntent = new Intent(this, XYZ.class); 
     startActivityForResult(photoPickerIntent, SELECT_IMAGE_REQUEST); 
    } 
} else { 
    Intent photoPickerIntent = new Intent(this, XYZ.class); 
    startActivityForResult(photoPickerIntent, SELECT_IMAGE_REQUEST); 
} 
+0

छवियों को चुनने के लिए आप किस ऐप (उदाहरण के लिए) हैं? मैंने क्विकपिक और सैमसंग गैलरी ऐप की कोशिश की है लेकिन दोनों केवल एक पिकिंग का समर्थन करने के लिए प्रतीत होते हैं। आपका कोड मेरा जैसा दिखता है। – Hyndrix

+0

मैंने मोटो जी और नेक्सस 4, नेक्सस 5 और नेक्सस 6 डिवाइस पर ऊपर परीक्षण किया है। – strike

+0

सिस्टम गैलरी ऐप के साथ? – Hyndrix

2

थेर कोई बहु देशी गैलरी में चयन, लेकिन आप इस पुस्तकालय के साथ यह कर सकते हैं है: https://github.com/luminousman/MultipleImagePick

+2

लिंक के लिए धन्यवाद। वहां भी कई अन्य कस्टम समाधान हैं। लेकिन मैं 'EXTRA_ALLOW_MULTIPLE'' का उपयोग करना चाहता हूं। – Hyndrix

0
/** 
* Extra used to indicate that an intent can allow the user to select and 
* return multiple items. This is a boolean extra; the default is false. If 
* true, an implementation is allowed to present the user with a UI where 
* they can pick multiple items that are all returned to the caller. When 
* this happens, they should be returned as the {@link #getClipData()} part 
* of the result Intent. 
* 
* @see #ACTION_GET_CONTENT 
* @see #ACTION_OPEN_DOCUMENT 
*/ 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == Activity.RESULT_OK) { 
     if (data.getData() != null) { 
      try { 
       files.clear(); 
       Uri uri = data.getData(); 
       String url = FileUtils2.getPath(this, uri); 
       assert url != null; 
       File file = new File(url); 
       files.add(file); 
       mPresenter.postAnnexData(files); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } else { 
      //If uploaded with the new Android Photos gallery 
      ClipData clipData = data.getClipData(); 
      files.clear(); 
      if (clipData != null) { 
       for (int i = 0; i < clipData.getItemCount(); i++) { 
        ClipData.Item item = clipData.getItemAt(i); 
        Uri uri = item.getUri(); 
        String url = FileUtils2.getPath(this, uri); 
        assert url != null; 
        File file = new File(url); 
        files.add(file); 
       } 
      } 
      mPresenter.postAnnexData(files); 
     } 
    } 
} 
संबंधित मुद्दे