2009-12-07 10 views
9

तो मैं अपने Android विधि यहाँ वर्णित का उपयोग कर आवेदन के साथ मीडिया के किसी विशेष भाग लेने के लिए उपयोगकर्ता अनुमति देने के लिए कोशिश कर रहा हूँ: Access pictures from Pictures app in my android appतक पहुँचना वीडियो और तस्वीरों के +

यह बहुत अच्छा काम करता है, के अलावा तथ्य यह है कि मैं उपयोगकर्ता को प्रस्तुत करने के लिए केवल वीडियो या फोटो के बीच ही चुन सकता हूं, दोनों एक ही समय में नहीं। वहाँ के साथ ऐसा करना एक अच्छा तरीका है:

startActivityForResult (नई आशय (Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), SELECT_IMAGE);

धन्यवाद!

+0

चोट के अपमान जोड़ने के लिए प्रयास करें - जब मैं वीडियो के साथ विधि का उपयोग करें - यह सिर्फ यह निभाता है, जब वे उसका चयन करें - यह वास्तव में उपयोगकर्ता मीडिया लेने के लिए अनुमति नहीं दी जाएगी - और यह थंबनेल नहीं दिखाएगा। क्या मैं गैलरी को फिर से लिखने जा रहा हूं? क्या गैलरी को कॉल करने का कोई तरीका है और फिर मीडिया के चुने हुए टुकड़े के लिए उरी वापस कर दिया है ??? – FunnyLookinHat

उत्तर

17

मैंने इसे कई बार उपयोग किया है।

Intent mediaChooser = new Intent(Intent.ACTION_GET_CONTENT); 
//comma-separated MIME types 
mediaChooser.setType("video/*, images/*"); 
startActivityForResult(mediaChooser, 1); 

यहां तक ​​कि अगर यह पूरी तरह से सही नहीं है, यह सब कुछ मैं इसे का उपयोग किया है में ठीक काम किया है यह का एक थंबनेल सूची के साथ एक गैलरी-esque गतिविधि खुल जाएगा: सबसे अच्छा तरीका है कुछ की तरह है। उपयोगकर्ता की गैलरी में हर तस्वीर/वीडियो। onActivityResult() पर लौटाए गए इरादे में एक अतिरिक्त "डेटा" कहा जाता है जो एक सामग्री होगी: // चयनित यूआरआई के लिए यूआरआई।

संपादित करें: उफ़, चयनित मीडिया आप वास्तव में आशय onActivityResult()

+2

रॉबर्ट - किसी भी कारण से जब भी मैं निम्न पंक्ति का उपयोग करता हूं, मेरे पास एक खाली पिकर शो है: mediaChooser.setType ("वीडियो/*, छवियां/*"); मैंने यह भी भाग्य के साथ कोशिश की है ... mediaChooser.setType ("वीडियो/*, छवि/*"); हालांकि, प्रत्येक व्यक्ति व्यक्तिगत रूप से ठीक काम करता है ... यानी mediaChooser.setType ("वीडियो/*"); mediaChooser.setType ("छवि/*"); क्या आप एक सटीक कोड स्निपेट पेस्ट कर सकते हैं जो काम करता है? **** संपादित करें - ऐसा लगता है कि यह अब संस्करण संस्करण 2.0 – FunnyLookinHat

+3

हाय काम नहीं करता है! मैं एंड्रॉइड 1.6 का उपयोग कर रहा हूं और यह काम नहीं करता है! केवल छवि या केवल वीडियो ठीक है। कोई उपाय? – Karoly

+1

2.3 –

1

Kivy के लिए पारित हो जाता है कि पर GetData() कॉल करना चाहते हैं के लिए यूआरआइ प्राप्त करने के लिए - सबसे आसान तरीका है एक आशय बनाने के लिए है मीडिया के एक टुकड़े का चयन करें और वीडियो के लिए यह प्रतिबंधित करने के लिए:

Intent pickMedia = new Intent(Intent.ACTION_GET_CONTENT); 
pickMedia.setType("video/*"); 
startActivityForResult(pickMedia,12345); 

नोट - 12345 पूर्णांक है कि आपका ऐप ताकि आप जो कुछ भी जानकारी आप प्राप्त भेज सकते हैं भी आप की जरूरत है एक अनुरोध कॉलबैक पर के लिए सुनने की जरूरत है।

तो आप की जरूरत भी है कि एक ही गतिविधि की जानकारी के लिए सुन कि इरादे से वापस भेजे जाने के लिए है करने के लिए:

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (requestCode == 12345) { 
      if (resultCode == Activity.RESULT_OK) { 
       Uri selectedVideoLocation = data.getData(); 

       // Do something with the data... 
      } 

     } 
    } 

कूल?

+1

सवाल वीडियो और फोटो तक पहुंचने के बारे में था - न सिर्फ वीडियो। आपके द्वारा दिए गए उत्तर केवल वीडियो का सम्मान करते हैं। –

+0

दुर्भाग्यवश आप एंड्रॉइड 2.0+ में ऐसा नहीं कर सकते - मीडिया की फ़ेक्ड विधि Chooser.setType ("वीडियो/*, छवियां/*"); काम नहीं करेगा, और जब तक कि आप अपनी खुद की चयनकर्ता गतिविधि नहीं बनाते जो मीडिया के लिए स्कैन करता है और इसे एक पिकर स्क्रीन पर लौटाता है - आपको सबसे अच्छा मिलेगा कि उपयोगकर्ता को वीडियो की छवि के बीच एक विकल्प देना है। – FunnyLookinHat

+0

पता नहीं है कि उन्होंने 4.2.x में क्या किया है, लेकिन कई माइम प्रकारों का चयन करना ठीक काम करता है :) –

1
intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
startActivityForResult(intent, 1); 
1

इस

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
intent.setType("*/*"); 
startActivityForResult(intent, 101); 
संबंधित मुद्दे