แอพ Android ใช้ปุ่มแชร์อย่างไร


11

ฉันสงสัยว่าแอปพลิเคชัน Android และ Android ใช้ปุ่มแบ่งปันและกลไกการแชร์อย่างไร ตัวอย่างเช่นเมื่อฉันกดปุ่มแชร์บน YouTube รายการที่ปิดแอพเพื่อแชร์จะปรากฏขึ้น รายการนี้ถูกกำหนดอย่างไร มีจุดประสงค์ "แบ่งปัน" ที่เฉพาะเจาะจงหรือไม่และจากนั้นจุดทั้งหมดสามารถแบ่งปันประเภทของเจตนาที่มีให้ในการแสดงเจตนาเพิ่มเติมได้หรือไม่ ชื่อทางเทคนิคของรูปแบบการออกแบบที่ใช้ในการทำสิ่งนี้คืออะไร? ขอบคุณ


1
คุณหมายถึง "poops" หรือว่าเป็นคำว่า "pops" ใช่หรือไม่ อย่างน้อยในภาษาอังกฤษแบบอเมริกันอดีตคือสิ่งที่เด็กทำกับผ้าอ้อมของพวกเขา
JDługosz

คุณถูก. ฉันเพิ่งเปลี่ยนไปใช้แป้นพิมพ์ Swype บน Android ซึ่งทำให้ฉันพิมพ์ได้เร็วขึ้น แต่บางครั้งมันก็ป้อนคำผิดและฉันไม่สังเกตเห็น ยังไม่แน่ใจว่าจะทำยังไงฉันยังไม่ระวังตัวมาก บางครั้งอยู่ในส่วนย่อยและไม่สามารถมองเห็นหน้าจอได้อย่างถูกต้อง
Jack Maddington

ในการย่อย (submarine?)! สิ่งที่ต้องทำ: พิสูจน์อักษรก่อนส่ง และอย่าทำให้รายการคำทำนายของคุณสกปรกด้วยคำที่น่าอาย
JDługosz

รายการพยากรณ์ของฉันเต็มไปด้วยอีเมลเก่า ๆ ซึ่ง Swype อ่านโดยอัตโนมัติ อ๊ะ!
Jack Maddington

คำตอบ:


10

มีสองส่วนดังนี้: กลไกสำหรับแอปสื่อสารที่จะบอกว่าพวกเขาสามารถแชร์สิ่งต่าง ๆ และกลไกสำหรับแอพที่มีเนื้อหาที่จะแชร์ ฉันจะจัดการกับพวกเขาในเวลา แต่แรกอย่างรวดเร็วทราบเกี่ยวกับเจตนา

intents

เจตนาใน Android เป็นสิ่งที่ใช้ในการเริ่มต้นแอป สามารถทำงานได้เช่นทางลัดหรือเชื่อมโยงกับไฟล์ Windows ความตั้งใจสามารถระบุชื่อแอพที่จะเริ่มต้น แต่ไม่จำเป็นต้อง นอกจากนี้ยังสามารถระบุการกระทำที่จะดำเนินการ (เช่น "เปิดกิจกรรมหลักของคุณ", "ดู URL นี้", "สร้างรายการปฏิทิน") และประเภท MIME ของวัตถุที่จะทำงาน (เช่นสิ่งที่คุณต้องการดู มีประเภทภาพ / jpeg) ชื่อการกระทำบางรายการมีความเฉพาะเจาะจงสำหรับแอปหนึ่ง ๆ แต่แอนดรอยด์ส่วนใหญ่จะเป็นมาตรฐานเพื่อให้แอปสามารถโต้ตอบได้

ตัวกรองเจตนาและแอพการสื่อสาร

แต่ละแอปจะระบุตัวกรองความตั้งใจที่จะพูดถึงการกระทำที่สามารถทำได้ เช่นแอปดูรูปภาพจะลงทะเบียนตัวกรองเจตนาสำหรับ "ดู URL นี้" โดยที่ประเภท MIME คือ "image / *"; เว็บเบราว์เซอร์จะลงทะเบียนตัวกรองเจตนาสำหรับ "ดู URL นี้" โดยที่รูปแบบ URL คือ "http" หรือ "https" เพื่อให้สามารถแบ่งปันสิ่งต่าง ๆ ได้แอปจะลงทะเบียนตัวกรองเจตนาสำหรับเจตนา "ส่ง" ไม่ว่าจะเป็นประเภทใดประเภทหนึ่ง (เช่นหากสามารถแบ่งปันภาพถ่ายได้) หรือประเภทใดก็ได้

แอพเนื้อหา

แอพที่ต้องการแบ่งปันเนื้อหาบางส่วนสร้างความตั้งใจด้วยการกระทำ "แชร์" และ URL ที่ชี้ไปยังเนื้อหาที่จะแชร์ (ซึ่งมักจะเป็น URL "ชั่วคราว" ที่ให้สิทธิ์การเข้าถึงแอปชั่วคราวกับไฟล์ในที่เก็บข้อมูลส่วนตัวของแอพเนื้อหาหรือกระแสที่สร้างโดยแอพเนื้อหา) ไม่ได้ระบุชื่อแอพที่จะจัดการ เจตนา จากนั้นจะให้ความสำคัญกับกรอบ Android และขอให้ Android แสดงกล่องโต้ตอบตัวเลือก Android เปรียบเทียบเจตนากับตัวกรองความตั้งใจจากแอพที่ติดตั้งทั้งหมดและสร้างรายการและแสดงให้ผู้ใช้เห็น เมื่อผู้ใช้เลือกแอพใดแอนดรอยด์จะเริ่มแอพนั้นและส่งผ่านความตั้งใจ แอปใช้ URL เพื่อรับเนื้อหาจากแอปดั้งเดิม

ใหม่ใน Marshmallow: แบ่งปันโดยตรง

ใน Marshmallow มีกลไกอื่นที่เรียกว่าตรงแบ่งปัน นี่เป็นการเสริมกลไกความตั้งใจเพื่อให้คุณสามารถเลือกบุคคลหรือกลุ่มที่จะแบ่งปันโดยตรงจากกล่องโต้ตอบตัวเลือกโดยข้ามขั้นตอนพิเศษของ "ผู้ที่คุณต้องการส่งไปให้" สิ่งนี้ทำงานแตกต่างกันเล็กน้อย: แอปการสื่อสารจะต้องให้บริการ เมื่อแอพที่มีเนื้อหาถามหาผู้เลือก Android จะเริ่มให้บริการสำหรับแอพที่เกี่ยวข้องแต่ละรายการ บริการจะส่งกลับรายการเป้าหมายการแชร์ที่เกี่ยวข้องและ Android จะรวบรวมรายการแยกเหล่านั้นทั้งหมดลงในรายการที่แสดงในกล่องโต้ตอบ


แต่ฉันเคยเห็นแอพแสดงกล่องโต้ตอบตัวเลือกที่แตกต่างกันค่อนข้างน้อย พวกเขาทั้งหมดแสดงโดยระบบปฏิบัติการจริง ๆ หรือแอพสามารถรับรายการเป้าหมายได้หรือไม่?
user1686

@grawity กล่องโต้ตอบในตัวมีตัวเลือกการปรับแต่งบางอย่าง (เช่นตั้งชื่อ) แต่ก็เป็นไปได้ที่แอพจะถาม Android สำหรับรายการเป้าหมายที่ใช้ร่วมกันและวางไว้ในกล่องโต้ตอบของตัวเอง ตัวเลือกเบราว์เซอร์ของฉันbURLyเป็นตัวอย่างของสิ่งนี้ แต่ด้วยเจตนา "เปิด URL" แทนเจตนา "ส่ง"
Dan Hulme

11

ฉันไม่ใช่ dev ดังนั้นฉันสามารถให้คำอธิบายแบบดิบ ๆ ได้: แอปพลิเคชั่นระบุว่าManifestMimetypes ชนิดใดที่พวกเขาเข้าใจและเต็มใจที่จะตอบสนองต่อการดำเนินการแบ่งปัน สำหรับสิ่งนี้พวกเขาให้คำจำกัดความที่เรียกว่า "ตัวกรองเจตนา" เช่น:

<intent-filter>
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:mimeType="application/*" />
    <data android:mimeType="audio/*" />
    <data android:mimeType="image/*" />
    <data android:mimeType="message/*" />
    <data android:mimeType="multipart/*" />
    <data android:mimeType="text/*" />
    <data android:mimeType="video/*" />
</intent-filter>

ดังนั้นเมื่อใดก็ตามที่คุณกดปุ่ม "แบ่งปัน" การแบ่งปันเนื้อหาจะได้รับการประเมินและจับคู่กับแอพที่ประกาศว่าพวกเขาเต็มใจที่จะรับรูปแบบ

แหล่งที่มา:


1
มันค่อนข้างโดยตรง แอป (ทำการแบ่งปัน) ตัวมันเองสามารถกรองผู้ตอบเจตนาบางคน แต่ส่วนใหญ่ทำไม่ได้
coteyr

2
@HiltonShumway นั่นเป็นเหตุผลที่ฉัน upvoted คำตอบของเขา นอกเหนือจากฉันแล้วแดนยังเหมาะกับการพัฒนาและรู้ดีกว่ามากว่าสิ่งต่าง ๆ ไปด้วยกันได้อย่างไร ดังนั้นเมื่อผมโพสต์คำตอบของฉันผมก็หวังว่าเขาจะโพสต์หนึ่งเช่นกัน - เขาก็ไม่ทำให้ผิดหวังความหวังของฉัน :)
อิซซี่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.