سؤال

لذلك أحاول السماح للمستخدم باختيار قطعة من الوسائط معينة مع تطبيق Android الخاص بي باستخدام الطريقة الموضحة هنا:الوصول إلى الصور من تطبيقات الصور في تطبيق Android الخاص بي

إنه يعمل بشكل رائع، باستثناء حقيقة أنه يمكنني فقط الاختيار بين الفيديو أو الصورة فقط لتقديم المستخدم مع، ليس في نفس الوقت. هل هناك طريقة جيدة للقيام بذلك مع:

StartActivityForreSult (نية جديدة (نية جديدة_pick_pick، android.provider.mediastore.images.media.internal_content_uri)، select_image)؛

شكرا!

هل كانت مفيدة؟

المحلول

لقد استخدمت هذه عدة مرات. أفضل طريقة هي شيء مثل:

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

حتى لو لم يكن هذا دقيقا تماما، فقد عملت بشكل جيد في كل ما استخدمته فيه. سيفتح نشاطا معرضا معرضا مع قائمة مصغرة من كل صورة / فيديو في معرض المستخدم. نية عاد ل onActivityResult() لديه إضافي يسمى "البيانات" التي ستكون محتوى: // uri إلى الوسائط المحددة.

تحرير: عفوا، للحصول على URI إلى الوسائط المحددة التي تريد الاتصال بها بالفعل احصل على البيانات() بناء على النية التي تمر مع onactivityResult ()

نصائح أخرى

كيفي - أسهل طريقة هي إنشاء نية لتحديد قطعة من الوسائط وتقييدها للفيديو:

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...
            } 

        }
    }

بارد؟

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

جرب هذا

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
startActivityForResult(intent, 101);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top