it-swarm.dev

الفرق بين Intent.ACTION_GET_CONTENT و Intent.ACTION_PICK

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

Intent myIntent = new Intent(Intent.ACTION_PICK);
myIntent.setType("image/*");
startActivityForResult(myIntent, 100);

أذهب مباشرة إلى المعرض ، لكن عندما أكتب:

Intent myIntent = new Intent(Intent.ACTION_GET_CONTENT, null);
myIntent.setType("image/*");
startActivityForResult(myIntent, 100);

يمكنني الاختيار من المعرض ، أو Google Drive. ما هي أفضل طريقة للسماح للمستخدم باختيار ما التطبيق لاسترداد الصورة من كل مرة؟ أو لماذا يحدث هذان الثوابت المختلفة للقصد فرقًا؟

62
EGHDK

أول Intent الخاص بك غير صالح. يتطلب بروتوكول الخاص بـ ACTION_PICK توفير Uri يشير إلى المجموعة التي تختارها.

ما هي أفضل طريقة للسماح للمستخدم باختيار ما التطبيق لاسترداد الصورة من كل مرة؟

إذا كنت تريد أن يختار المستخدم شيئًا بناءً على نوع MIME ، فاستخدم ACTION_GET_CONTENT.

إذا كان لديك مجموعة معينة (تم تحديدها بواسطة Uri) تريد أن يختار المستخدم منها ، فاستخدم ACTION_PICK.

في حالة التعادل ، انتقل مع ACTION_GET_CONTENT. بينما لم يتم إهمال ACTION_PICK رسميًا ، توصي Dianne Hackborn ACTION_GET_CONTENT .

89
CommonsWare

الإجراء الحديث هو ACTION_GET_CONTENT ، وهو مدعوم بشكل أفضل ،

ACTION_PICK:

إجراء النشاط: اختر عنصرًا من البيانات ، مع إرجاع ما تم تحديده.

الإدخال: getData () هو URI الذي يحتوي على دليل للبيانات (vnd.Android.cursor.dir/*) يتم اختيار عنصر منه.

الإخراج: URI للعنصر الذي تم اختياره.

قيمة ثابتة: "Android.intent.action.PICK"


الفرق : -

إجراء النشاط: اسمح للمستخدم بتحديد نوع معين من البيانات وإعادته .

هذا يختلف عن ACTION_PICK حيث أننا هنا نقول فقط نوع البيانات المطلوبة ، ليس URI للبيانات الموجودة التي يمكن للمستخدم من خلالها الاختيار.

قد يسمح A ACTION_GET_CONTENT للمستخدم بإنشاء البيانات أثناء تشغيلها (على سبيل المثال التقاط صورة أو تسجيل صوت ، والسماح لهم تصفح الإنترنت وتنزيل البيانات المطلوبة ، إلخ.

المرجع http://developer.Android.com/reference/Android/content/Intent.html#ACTION_GET_CONTENT

14
Tarsem Singh