Android ใช้ Intent และรายการเพิ่มเติมที่เกี่ยวข้อง เพื่อให้ผู้ใช้แชร์ข้อมูลได้อย่างรวดเร็ว ได้ง่ายๆ โดยใช้แอปโปรดของพวกเขา
Android ให้ผู้ใช้แชร์ข้อมูลระหว่างแอป 2 วิธี ดังนี้
- Sharesheet ของ Android ออกแบบมาเพื่อส่งเนื้อหาไปนอกแอปและ/หรือส่งโดยตรง ให้ผู้ใช้คนอื่นทราบ เช่น การแชร์ URL กับเพื่อน
- รีโซลเวอร์ Intent ของ Android เหมาะที่สุดสำหรับการส่งข้อมูลไปยัง งานที่กำหนดไว้อย่างดี เช่น การเปิดไฟล์ PDF จากแอปและอนุญาตให้ผู้ใช้เลือกโปรแกรมดูที่ต้องการ
เมื่อสร้าง Intent คุณจะระบุการดำเนินการที่ต้องการให้ Intent ดำเนินการ
Android ใช้การดำเนินการ ACTION_SEND
ส่งข้อมูลจากกิจกรรมหนึ่งไปยังอีกกิจกรรมหนึ่ง
แม้จะข้ามขอบเขตของกระบวนการ คุณต้องระบุข้อมูลและประเภทของข้อมูล ระบบจะระบุกิจกรรมที่เข้ากันได้โดยอัตโนมัติ
สามารถรับข้อมูลและแสดงผลให้กับผู้ใช้ได้ ในกรณีของโปรแกรมแก้ไข Intent หากมีเพียงกิจกรรมเดียวที่จัดการ Intent ได้ กิจกรรมนั้นจะเริ่มต้นทันที
เหตุผลที่ควรใช้ Android Sharesheet

เราขอแนะนําอย่างยิ่งให้ใช้แผงการแชร์ของ Android เพื่อสร้างความสอดคล้องให้กับผู้ใช้ในแอปต่างๆ อย่าแสดงรายการเป้าหมายการแชร์ของแอปเองหรือสร้างรูปแบบชีตการแชร์ของคุณเอง
ชีตการแชร์ของ Android ช่วยให้ผู้ใช้แชร์ข้อมูลกับบุคคลที่เหมาะสมได้ด้วยการแตะเพียงครั้งเดียว พร้อมทั้งแสดงแอปแนะนำที่เกี่ยวข้อง Sharesheet สามารถแนะนำเป้าหมายที่โซลูชันที่กำหนดเองใช้งานไม่ได้ และใช้การจัดอันดับที่สอดคล้องกัน เนื่องจากชีตการแชร์จะพิจารณาข้อมูลเกี่ยวกับแอปและกิจกรรมของผู้ใช้ที่มีให้ระบบเท่านั้น
ชีตการแชร์ของ Android ยังมีฟีเจอร์ที่มีประโยชน์มากมายสำหรับนักพัฒนาแอปด้วย ตัวอย่างเช่น คุณสามารถ ให้ทำดังนี้
- ดูว่าผู้ใช้แชร์เสร็จเมื่อใดและจากที่ใด
- เพิ่ม
ChooserTarget
และเป้าหมายแอปที่กำหนดเอง - แสดงตัวอย่างเนื้อหาแบบ Rich Text โดยเริ่มจาก Android 10 (API ระดับ 29)
- ยกเว้นเป้าหมายที่ตรงกับชื่อคอมโพเนนต์ที่เฉพาะเจาะจง
ใช้ Sharesheet ของ Android
สำหรับการแชร์ทุกประเภท ให้สร้าง Intent และตั้งค่าการดำเนินการเป็น
Intent.ACTION_SEND
หากต้องการแสดงหน้าจอการแชร์ของ Android ให้เรียกใช้ Intent.createChooser()
โดยส่งออบเจ็กต์ Intent
ซึ่งจะแสดง Intent เวอร์ชันที่แสดงหน้าจอการแชร์ของ Android เสมอ
ส่งเนื้อหาข้อความ
การใช้งานที่ตรงไปตรงมาและพบได้บ่อยที่สุดของ Sharesheet ใน Android คือการส่งเนื้อหาข้อความจากกิจกรรมหนึ่งไปยังอีกกิจกรรมหนึ่ง ตัวอย่างเช่น เบราว์เซอร์ส่วนใหญ่สามารถแชร์ URL ของ URL ที่แสดงอยู่ในปัจจุบัน เป็นข้อความด้วยแอปอื่น ซึ่งจะเป็นประโยชน์สำหรับการแชร์บทความหรือเว็บไซต์กับเพื่อนๆ ผ่าน อีเมลหรือเครือข่ายสังคม ตัวอย่างวิธีดำเนินการมีดังนี้
val sendIntent: Intent = Intent().apply { action = Intent.ACTION_SEND putExtra(Intent.EXTRA_TEXT, "This is my text to send.") type = "text/plain" } val shareIntent = Intent.createChooser(sendIntent, null) startActivity(shareIntent)
Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send."); sendIntent.setType("text/plain"); Intent shareIntent = Intent.createChooser(sendIntent, null); startActivity(shareIntent);
นอกจากนี้ คุณยังใส่ข้อมูลเพิ่มเติมเพื่อระบุข้อมูลเพิ่มเติมได้ เช่น ผู้รับอีเมล
(EXTRA_EMAIL
EXTRA_CC
,
EXTRA_BCC
)
เรื่องอีเมล
(EXTRA_SUBJECT
) เป็นต้น
หมายเหตุ: แอปอีเมลบางแอป เช่น Gmail จะต้องมี
String[]
สำหรับสิทธิประโยชน์เพิ่มเติม เช่น
EXTRA_EMAIL
และ EXTRA_CC
ใช้
putExtra(String, String[])
เพื่อเพิ่มรายการเหล่านี้ลงใน Intent ของคุณ
ส่งเนื้อหาไบนารี
แชร์ข้อมูลไบนารีโดยใช้การดำเนินการ ACTION_SEND
กำหนดประเภท MIME ที่เหมาะสม แล้ววาง URI ให้กับข้อมูลในข้อมูลเพิ่มเติม
EXTRA_STREAM
, เป็น
ที่แสดงในตัวอย่างต่อไปนี้
ซึ่งมักใช้เพื่อแชร์รูปภาพ แต่สามารถใช้เพื่อแชร์เนื้อหาไบนารีประเภทใดก็ได้
val shareIntent: Intent = Intent().apply { action = Intent.ACTION_SEND // Example: content://com.google.android.apps.photos.contentprovider/... putExtra(Intent.EXTRA_STREAM, uriToImage) type = "image/jpeg" } startActivity(Intent.createChooser(shareIntent, null))
Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); // Example: content://com.google.android.apps.photos.contentprovider/... shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage); shareIntent.setType("image/jpeg"); startActivity(Intent.createChooser(shareIntent, null));
แอปพลิเคชันที่เป็นผู้รับต้องการสิทธิ์เพื่อเข้าถึงข้อมูลที่ Uri
ชี้ไปที่ ซึ่งทำได้ 2 วิธีดังนี้
- เก็บข้อมูลไว้ใน
ContentProvider
ของคุณเอง โปรดตรวจสอบว่าอื่นๆ แอปได้รับสิทธิ์ที่ถูกต้องในการเข้าถึงผู้ให้บริการของคุณ กลไกที่แนะนำให้ใช้ คือการใช้สิทธิ์ต่อ URI ซึ่งก็คือ ชั่วคราวและให้สิทธิ์เฉพาะแอปพลิเคชันที่ได้รับ วิธีที่ง่ายในการสร้างContentProvider
แบบนี้คือการใช้คลาสตัวช่วยFileProvider
- ใช้ระบบ
MediaStore
MediaStore
มีไว้สำหรับประเภท MIME ของวิดีโอ เสียง และรูปภาพเป็นหลัก อย่างไรก็ตาม เริ่มต้นด้วย Android 3.0 (API ระดับ 11) นอกจากนี้ยังสามารถจัดเก็บประเภทที่ไม่ใช่สื่อ สำหรับข้อมูลเพิ่มเติม โปรดดูMediaStore.Files
สามารถแทรกไฟล์ลงในMediaStore
โดยใช้scanFile()
, หลังจากนั้นUri
แบบcontent://
ที่เหมาะสมแก่การแชร์onScanCompleted()
Callback โปรดทราบว่าเมื่อเพิ่มลงในระบบMediaStore
แล้ว เนื้อหาดังกล่าวจะเข้าถึงได้ แอปบนอุปกรณ์เคลื่อนที่
ใช้ประเภท MIME ที่เหมาะสม
ระบุประเภท MIME ที่เฉพาะเจาะจงที่สุดสำหรับข้อมูลที่ส่ง เช่น ใช้ text/plain
เมื่อแชร์ข้อความธรรมดา ประเภท MIME ที่พบบ่อยเมื่อส่งข้อมูลธรรมดาใน Android มีดังนี้
ผู้รับลงทะเบียนเพื่อรับ | ผู้ส่งส่ง |
---|---|
text/* |
|
`image/*` |
|
video/* |
|
นามสกุลไฟล์ที่รองรับ | application/pdf |
ดูข้อมูลเพิ่มเติมเกี่ยวกับประเภท MIME ได้ที่รีจิสทรีประเภทสื่อ MIME อย่างเป็นทางการของ IANA
ชีตการแชร์ของ Android อาจแสดงตัวอย่างเนื้อหา ทั้งนี้ขึ้นอยู่กับประเภท MIME ที่ระบุ ใช้บ้าง ฟีเจอร์พรีวิวจะใช้ได้เฉพาะบางประเภทเท่านั้น
แชร์เนื้อหาหลายชิ้น
หากต้องการแชร์เนื้อหาหลายรายการ ให้ใช้การดําเนินการ ACTION_SEND_MULTIPLE
ร่วมกับรายการ URI ที่ชี้ไปยังเนื้อหา ประเภท MIME จะแตกต่างกันไปตาม
ของเนื้อหาที่คุณแชร์ เช่น หากแชร์รูปภาพ JPEG 3 ภาพ คุณจะใช้ประเภท
"image/jpg"
สำหรับการผสมรูปภาพประเภทต่างๆ ให้ใช้ "image/*"
เพื่อจับคู่
กิจกรรมที่จัดการรูปภาพทุกประเภท แม้ว่าเราจะสามารถแบ่งปันเนื้อหาหลายประเภท แต่เรา
ก็ไม่แนะนำเพราะสิ่งนี้
ไม่ทราบชัดเจนว่าผู้รับต้องการส่งอะไร หากจำเป็นต้องส่งหลายประเภท ให้ใช้ "*/*"
การแยกวิเคราะห์ ขึ้นอยู่กับแอปพลิเคชันที่ได้รับ
และประมวลผลข้อมูลของคุณ ตัวอย่างเช่น
val imageUris: ArrayList<Uri> = arrayListOf( // Add your image URIs here imageUri1, imageUri2 ) val shareIntent = Intent().apply { action = Intent.ACTION_SEND_MULTIPLE putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris) type = "image/*" } startActivity(Intent.createChooser(shareIntent, null))
ArrayList<Uri> imageUris = new ArrayList<Uri>(); imageUris.add(imageUri1); // Add your image URIs here imageUris.add(imageUri2); Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE); shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris); shareIntent.setType("image/*"); startActivity(Intent.createChooser(shareIntent, null));
ตรวจสอบว่าออบเจ็กต์ Uri
ที่ระบุชี้ไปยังข้อมูลที่แอปพลิเคชันฝั่งที่รับสามารถเข้าถึงได้
เพิ่มเนื้อหาที่สมบูรณ์ลงในตัวอย่างข้อความ
เริ่มตั้งแต่ Android 10 (API ระดับ 29) Sharesheet ของ Android จะแสดงตัวอย่างของข้อความที่ปรากฏ
แชร์ ในบางกรณี ข้อความที่แชร์อาจเข้าใจยาก ลองแชร์
URL ที่ซับซ้อน เช่น https://www.google.com/search?ei=2rRVXcLkJajM0PEPoLy7oA4
ตัวอย่างเพลงที่สมบูรณ์ยิ่งขึ้นจะช่วยให้ผู้ใช้มั่นใจได้ว่าสิ่งที่แชร์คืออะไร
หากกำลังแสดงตัวอย่างข้อความ คุณสามารถตั้งชื่อ ภาพขนาดย่อ หรือทั้ง 2 อย่างได้ เพิ่มคำอธิบายลงใน
Intent.EXTRA_TITLE
ก่อนโทรหา Intent.createChooser()
และเพิ่ม
ภาพขนาดย่อที่เกี่ยวข้องโดยใช้ ClipData
หมายเหตุ: URI เนื้อหารูปภาพได้มาจาก
FileProvider
โดยปกติจะมาจาก <cache-path>
ที่กำหนดค่าไว้
ดูข้อมูลเพิ่มเติมได้ที่การแชร์ไฟล์ อย่าลืมให้สิทธิ์ที่เหมาะสมแก่ Google ไดรฟ์ในการอ่านรูปภาพที่ต้องการใช้เป็นภาพปก ดูข้อมูลเพิ่มเติมได้ที่ Intent.FLAG_GRANT_READ_URI_PERMISSION
ตัวอย่างเช่น
val share = Intent.createChooser(Intent().apply { action = Intent.ACTION_SEND putExtra(Intent.EXTRA_TEXT, "https://developer.android.com/training/sharing/") // (Optional) Here you're setting the title of the content putExtra(Intent.EXTRA_TITLE, "Introducing content previews") // (Optional) Here you're passing a content URI to an image to be displayed data = contentUri flags = Intent.FLAG_GRANT_READ_URI_PERMISSION }, null) startActivity(share)
Intent sendIntent = new Intent(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, "https://developer.android.com/training/sharing/"); // (Optional) Here you're setting the title of the content sendIntent.putExtra(Intent.EXTRA_TITLE, "Introducing content previews"); // (Optional) Here you're passing a content URI to an image to be displayed sendIntent.setData(contentUri); sendIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // Show the Sharesheet startActivity(Intent.createChooser(sendIntent, null));
ตัวอย่างจะมีลักษณะดังนี้

เพิ่มการดำเนินการที่กำหนดเองใน Sharesheet

ภาพหน้าจอของการดำเนินการที่กำหนดเองใน Android Sharesheet
ใน Android 14 (API ระดับ 34) ขึ้นไป แอปจะเพิ่มการดำเนินการที่กำหนดเองลงในหน้าจอการแชร์ของ Android ได้
การดําเนินการที่กำหนดเองจะแสดงเป็นไอคอนการดำเนินการเล็กๆ ที่ด้านบนของหน้าจอการแชร์ของ Android และแอปสามารถระบุ Intent
ใดก็ได้เป็นการดำเนินการที่เรียกให้แสดงเมื่อมีการคลิกไอคอน
หากต้องการเพิ่มการดำเนินการที่กำหนดเองในหน้าจอการแชร์ของ Android ก่อนอื่นให้สร้าง
ChooserAction
with
ChooserAction.Builder
คุณสามารถระบุ PendingIntent
เป็นการดำเนินการที่เรียกใช้เมื่อมีการคลิกไอคอน สร้าง
อาร์เรย์ที่มีการกระทำที่กำหนดเองทั้งหมดของคุณและระบุเป็น
EXTRA_CHOOSER_CUSTOM_ACTIONS
ของการแชร์ Intent
val sendIntent = Intent(Intent.ACTION_SEND) .setType("text/plain") .putExtra(Intent.EXTRA_TEXT, text) val shareIntent = Intent.createChooser(sendIntent, null) val customActions = arrayOf( ChooserAction.Builder( Icon.createWithResource(context, R.drawable.ic_custom_action), "Custom", PendingIntent.getBroadcast( context, 1, Intent(Intent.ACTION_VIEW), PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_CANCEL_CURRENT ) ).build() ) shareIntent.putExtra(Intent.EXTRA_CHOOSER_CUSTOM_ACTIONS, customActions) context.startActivity(shareIntent)
Intent sendIntent = new Intent(Intent.ACTION_SEND) .setType("text.plain") .putExtra(Intent.EXTRA_TEXT, text); Intent shareIntent = Intent.createChooser(sendIntent, null); ChooserAction[] actions = new ChooserAction[]{ new ChooserAction.Builder( Icon.createWithResource(context, R.drawable.ic_custom_action), "Custom", PendingIntent.getBroadcast( context, 1, new Intent(Intent.ACTION_VIEW), PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_CANCEL_CURRENT ) ).build() }; shareIntent.putExtra(Intent.EXTRA_CHOOSER_CUSTOM_ACTIONS, actions); context.startActivity(shareIntent);
เพิ่มเป้าหมายที่กำหนดเอง
ชีตการแชร์ของ Android ให้คุณระบุออบเจ็กต์ ChooserTarget
ได้สูงสุด 2 รายการที่จะแสดงก่อนโหลดทางลัดการแชร์และเป้าหมายเครื่องมือเลือกจาก ChooserTargetServices
นอกจากนี้ คุณยังระบุ Intent ที่ชี้ไปยังกิจกรรมที่แสดงก่อนการแนะนำแอปได้สูงสุด 2 รายการ ดังนี้

เพิ่ม Intent.EXTRA_CHOOSER_TARGETS
และ Intent.EXTRA_INITIAL_INTENTS
ลงใน Intent การแชร์หลังจากเรียกใช้ Intent.createChooser()
val share = Intent.createChooser(myShareIntent, null).apply { putExtra(Intent.EXTRA_CHOOSER_TARGETS, myChooserTargetArray) putExtra(Intent.EXTRA_INITIAL_INTENTS, myInitialIntentArray) }
Intent shareIntent = Intent.createChooser(sendIntent, null); share.putExtra(Intent.EXTRA_CHOOSER_TARGETS, myChooserTargetArray); share.putExtra(Intent.EXTRA_INITIAL_INTENTS, myInitialIntentArray);
โปรดใช้ฟีเจอร์นี้ด้วยความระมัดระวัง Intent
และ ChooserTarget
ที่กำหนดเองทุกรายการที่คุณเพิ่มจะลดจำนวนที่ระบบแนะนำ โดยทั่วไปเรา
คุณไม่ควรเพิ่มเป้าหมายที่กำหนดเอง ตัวอย่างที่พบบ่อยของการใส่Intent.EXTRA_INITIAL_INTENTS
คือการแสดงการดำเนินการเพิ่มเติมที่ผู้ใช้สามารถทำได้กับเนื้อหาที่แชร์ ตัวอย่างเช่น ผู้ใช้แชร์รูปภาพ และ Intent.EXTRA_INITIAL_INTENTS
ใช้เพื่อ
ให้ส่งลิงก์แทนก็ได้ ตัวอย่างที่เหมาะสมโดยทั่วไปของการเพิ่ม Intent.EXTRA_CHOOSER_TARGETS
คือการแสดงผู้คนหรืออุปกรณ์ที่เกี่ยวข้องจากแอปของคุณ
ยกเว้นเป้าหมายที่เฉพาะเจาะจงตามคอมโพเนนต์
คุณสามารถยกเว้นเป้าหมายที่เฉพาะเจาะจงได้โดยการระบุ Intent.EXTRA_EXCLUDE_COMPONENTS
ทําเช่นนี้เพื่อนําเป้าหมายที่คุณควบคุมได้ออกเท่านั้น กรณีการใช้งานทั่วไปคือการซ่อน
การกําหนดเป้าหมายการแชร์ของแอปเมื่อผู้ใช้แชร์จากภายในแอป เนื่องจากมีแนวโน้มที่ผู้ใช้มีแนวโน้มที่จะแชร์
นอกแอปของคุณ
เพิ่ม Intent.EXTRA_EXCLUDE_COMPONENTS
ลงใน Intent หลังเรียกใช้ Intent.createChooser()
:
val share = Intent.createChooser(Intent(), null).apply { // Only use for components you have control over val excludedComponentNames = arrayOf(ComponentName("com.example.android", "ExampleClass")) putExtra(Intent.EXTRA_EXCLUDE_COMPONENTS, excludedComponentNames) }
Intent shareIntent = Intent.createChooser(new Intent(), null); // Only use for components you have control over ComponentName[] excludedComponentNames = { new ComponentName("com.example.android", "ExampleClass") }; shareIntent.putExtra(Intent.EXTRA_EXCLUDE_COMPONENTS, excludedComponentNames);
ดูข้อมูลเกี่ยวกับการแชร์
การทราบเมื่อผู้ใช้แชร์และเป้าหมายที่เลือกจะเป็นประโยชน์มาก ชีตการแชร์ของ Android ช่วยให้คุณรับข้อมูลนี้ได้โดยการระบุ ComponentName
ของเป้าหมายที่ผู้ใช้เลือกโดยใช้ IntentSender
ก่อนอื่น ให้สร้าง PendingIntent
สำหรับ BroadcastReceiver
และระบุ
IntentSender
ใน Intent.createChooser()
:
var share = Intent(Intent.ACTION_SEND) // ... val pi = PendingIntent.getBroadcast( myContext, requestCode, Intent(myContext, MyBroadcastReceiver::class.java), PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT ) share = Intent.createChooser(share, null, pi.intentSender)
Intent share = new Intent(ACTION_SEND); ... PendingIntent pi = PendingIntent.getBroadcast(myContext, requestCode, new Intent(myContext, MyBroadcastReceiver.class), PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT); share = Intent.createChooser(share, null, pi.getIntentSender());
รับการติดต่อกลับใน MyBroadcastReceiver
แล้วรอตรวจสอบ
Intent.EXTRA_CHOSEN_COMPONENT
:
override fun onReceive(context: Context, intent: Intent) { ... val clickedComponent : ComponentName = intent.getParcelableExtra(EXTRA_CHOSEN_COMPONENT); }
@Override public void onReceive(Context context, Intent intent) { ... ComponentName clickedComponent = intent.getParcelableExtra(EXTRA_CHOSEN_COMPONENT); }
เพิ่มการดำเนินการที่กำหนดเองใน Sharesheet
ใน Android 14 (API ระดับ 34) ขึ้นไป แอปจะเพิ่มการดำเนินการที่กำหนดเองลงในหน้าจอการแชร์ของ Android ได้
สร้าง ChooserAction
กับ
ChooserAction.Builder
คุณระบุ PendingIntent
ได้เมื่อมีการเรียกใช้การดำเนินการเมื่อคลิกไอคอน สร้าง
อาร์เรย์ที่มีการดำเนินการที่กำหนดเองทั้งหมดของคุณและระบุเป็น
EXTRA_CHOOSER_CUSTOM_ACTIONS
ของการแชร์ Intent
val sendIntent = Intent(Intent.ACTION_SEND) .setType("text/plain") .putExtra(Intent.EXTRA_TEXT, text) val shareIntent = Intent.createChooser(sendIntent, null) val customActions = arrayOf( ChooserAction.Builder( Icon.createWithResource(context, R.drawable.ic_custom_action), "Custom", PendingIntent.getBroadcast( context, 1, Intent(Intent.ACTION_VIEW), PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_CANCEL_CURRENT ) ).build() ) shareIntent.putExtra(Intent.EXTRA_CHOOSER_CUSTOM_ACTIONS, customActions) context.startActivity(shareIntent)
Intent sendIntent = new Intent(Intent.ACTION_SEND) .setType("text.plain") .putExtra(Intent.EXTRA_TEXT, text); Intent shareIntent = Intent.createChooser(sendIntent, null); ChooserAction[] actions = new ChooserAction[]{ new ChooserAction.Builder( Icon.createWithResource(context, R.drawable.ic_custom_action), "Custom", PendingIntent.getBroadcast( context, 1, new Intent(Intent.ACTION_VIEW), PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_CANCEL_CURRENT ) ).build() }; shareIntent.putExtra(Intent.EXTRA_CHOOSER_CUSTOM_ACTIONS, actions); context.startActivity(shareIntent);
ใช้รีโซลเวอร์ Intent ของ Android

ภาพหน้าจอของโปรแกรมแก้ไข Intent ACTION_SEND
รีโซลเวอร์ Intent ของ Android จะใช้ได้ดีที่สุดเมื่อส่งข้อมูลไปยังแอปอื่นซึ่งเป็นส่วนหนึ่งของขั้นตอนงานที่กำหนดไว้อย่างชัดเจน
หากต้องการใช้รีโซลเวอร์ Intent ของ Android ให้สร้าง Intent และเพิ่มส่วนเสริมตามที่คุณจะเรียกใช้
Sharesheet ของ Android แต่อย่าโทรไปที่ Intent.createChooser()
หากมีแอปพลิเคชันที่ติดตั้งหลายรายการที่มีตัวกรองตรงกัน
ACTION_SEND
และประเภท MIME ระบบจะแสดงกล่องโต้ตอบที่มีคำอธิบายที่เรียกว่ารีโซลเวอร์ความตั้งใจ
ซึ่งช่วยให้ผู้ใช้เลือกเป้าหมายที่จะแชร์ด้วย หากแอปพลิเคชันเดียว
ก็จะทำงาน
ตัวอย่างวิธีใช้รีโซลเวอร์ Intent ของ Android เพื่อส่งข้อความมีดังนี้
val sendIntent: Intent = Intent().apply { action = Intent.ACTION_SEND putExtra(Intent.EXTRA_TEXT, "This is my text to send.") type = "text/plain" } startActivity(sendIntent)
Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send."); sendIntent.setType("text/plain"); startActivity(sendIntent);
ดูข้อมูลเพิ่มเติม
โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับการส่งข้อมูลที่ ตัวกรอง Intent และตัวกรอง Intent