Android ใช้ Intent และส่วนเสริมที่เกี่ยวข้องเพื่อให้ผู้ใช้แชร์ข้อมูลได้อย่างรวดเร็วและง่ายดายโดยใช้แอปโปรด
Android มี 2 วิธีให้ผู้ใช้แชร์ข้อมูลระหว่างแอป ดังนี้
- ชีตการแชร์ของ Android ออกแบบมาเพื่อส่งเนื้อหาไปยังภายนอกแอปและ/หรือส่งไปยังผู้ใช้รายอื่นโดยตรงเป็นหลัก เช่น การแชร์ URL กับเพื่อน
- ตัวแก้ไข Intent ของ Android เหมาะสําหรับการส่งข้อมูลไปยังระยะถัดไปของงานที่กําหนดไว้อย่างดี เช่น การเปิดไฟล์ PDF จากแอปและอนุญาตให้ผู้ใช้เลือกโปรแกรมดูที่ต้องการ
เมื่อสร้าง Intent คุณจะระบุการดำเนินการที่ต้องการให้ Intent ดำเนินการ
Android ใช้การดำเนินการ ACTION_SEND
เพื่อส่งข้อมูลจากกิจกรรมหนึ่งไปยังอีกกิจกรรมหนึ่ง แม้ข้ามขอบเขตกระบวนการก็ตาม คุณต้องระบุข้อมูลและประเภทของข้อมูล ระบบจะระบุกิจกรรมที่เข้ากันได้โดยอัตโนมัติซึ่งสามารถรับข้อมูลและแสดงต่อผู้ใช้ ในกรณีของโปรแกรมแก้ไข Intent หากมีเพียงกิจกรรมเดียวที่จัดการ Intent ได้ กิจกรรมนั้นจะเริ่มต้นทันที
เหตุผลที่ควรใช้ Android Sharesheet
เราขอแนะนําอย่างยิ่งให้ใช้แผงการแชร์ของ Android เพื่อสร้างความสอดคล้องให้กับผู้ใช้ในแอปต่างๆ อย่าแสดงรายการเป้าหมายการแชร์ของแอปเองหรือสร้างรูปแบบชีตการแชร์ของคุณเอง
ชีตการแชร์ของ Android ช่วยให้ผู้ใช้แชร์ข้อมูลกับบุคคลที่เหมาะสมได้ด้วยการแตะเพียงครั้งเดียว พร้อมทั้งแสดงแอปแนะนำที่เกี่ยวข้อง ชีตการแชร์จะแนะนําเป้าหมายที่โซลูชันที่กําหนดเองใช้ไม่ได้ และใช้การจัดอันดับที่สอดคล้องกัน เนื่องจากชีตการแชร์สามารถพิจารณาข้อมูลเกี่ยวกับแอปและกิจกรรมของผู้ใช้ที่มีให้ระบบเท่านั้น
ชีตการแชร์ของ Android ยังมีฟีเจอร์ที่มีประโยชน์มากมายสำหรับนักพัฒนาแอปด้วย เช่น คุณจะทำสิ่งต่อไปนี้ได้
- ดูว่าผู้ใช้แชร์เสร็จสมบูรณ์เมื่อใดและแชร์ไปยังที่ใด
- เพิ่ม
ChooserTarget
และเป้าหมายแอปที่กําหนดเอง - แสดงตัวอย่างเนื้อหาแบบ Rich Text โดยเริ่มจาก Android 10 (API ระดับ 29)
- ยกเว้นเป้าหมายที่ตรงกับชื่อคอมโพเนนต์ที่เฉพาะเจาะจง
ใช้ Android Sharesheet
สําหรับการแชร์ทุกประเภท ให้สร้าง Intent และตั้งค่าการดําเนินการเป็น
Intent.ACTION_SEND
หากต้องการแสดงแผงการแชร์ของ Android ให้เรียกใช้ Intent.createChooser()
โดยส่งออบเจ็กต์ Intent
ไปให้
ซึ่งจะแสดง Intent เวอร์ชันที่แสดงหน้าจอการแชร์ของ Android เสมอ
ส่งเนื้อหาข้อความ
การใช้งานที่ตรงไปตรงมาและพบได้บ่อยที่สุดของ Sharesheet ใน Android คือการส่งเนื้อหาข้อความจากกิจกรรมหนึ่งไปยังอีกกิจกรรมหนึ่ง เช่น เบราว์เซอร์ส่วนใหญ่สามารถแชร์ URL ของหน้าเว็บที่แสดงอยู่เป็นข้อความกับแอปอื่นได้ ซึ่งมีประโยชน์สำหรับการแชร์บทความหรือเว็บไซต์กับเพื่อนผ่านอีเมลหรือโซเชียลเน็ตเวิร์ก ตัวอย่างวิธีดำเนินการมีดังนี้
Kotlin
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)
Java
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
เพิ่มเติม ดังที่แสดงในตัวอย่างต่อไปนี้
ซึ่งมักใช้เพื่อแชร์รูปภาพ แต่สามารถใช้เพื่อแชร์เนื้อหาไบนารีประเภทใดก็ได้
Kotlin
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))
Java
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/*"
เพื่อจับคู่กิจกรรมที่จัดการรูปภาพทุกประเภท แม้ว่าคุณจะแชร์ไฟล์หลายประเภทได้ แต่เราไม่แนะนำให้ทำเช่นนั้น เนื่องจากผู้รับจะไม่รู้ว่าคุณตั้งใจจะส่งไฟล์ประเภทใด หากจำเป็นต้องส่งหลายประเภท ให้ใช้ "*/*"
แอปพลิเคชันฝั่งที่รับจะเป็นผู้แยกวิเคราะห์และประมวลผลข้อมูลของคุณ ตัวอย่างเช่น
Kotlin
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))
Java
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) เป็นต้นไป ชีตการแชร์ของ 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
ตัวอย่างเช่น
Kotlin
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)
Java
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));
ตัวอย่างจะมีลักษณะดังนี้
เพิ่มการดำเนินการที่กำหนดเองลงในชีตการแชร์
ใน Android 14 (API ระดับ 34) ขึ้นไป แอปจะเพิ่มการดำเนินการที่กำหนดเองลงในหน้าจอการแชร์ของ Android ได้
การดําเนินการที่กำหนดเองจะแสดงเป็นไอคอนการดำเนินการเล็กๆ ที่ด้านบนของหน้าจอการแชร์ของ Android และแอปสามารถระบุ Intent
ใดก็ได้เป็นการดำเนินการที่เรียกให้แสดงเมื่อมีการคลิกไอคอน
หากต้องการเพิ่มการดําเนินการที่กำหนดเองในหน้าจอการแชร์ของ Android ก่อนอื่นให้สร้าง ChooserAction
ที่มี ChooserAction.Builder
คุณสามารถระบุ PendingIntent
เป็นการดําเนินการที่เรียกใช้เมื่อมีการคลิกไอคอน สร้างอาร์เรย์ที่มีการดำเนินการที่กำหนดเองทั้งหมด แล้วระบุเป็น EXTRA_CHOOSER_CUSTOM_ACTIONS
ของส่วนแบ่ง Intent
Kotlin
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)
Java
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()
Kotlin
val share = Intent.createChooser(myShareIntent, null).apply { putExtra(Intent.EXTRA_CHOOSER_TARGETS, myChooserTargetArray) putExtra(Intent.EXTRA_INITIAL_INTENTS, myInitialIntentArray) }
Java
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
โปรดใช้วิธีนี้เพื่อนำเป้าหมายที่คุณควบคุมได้ออกเท่านั้น Use Case ที่พบบ่อยคือการซ่อนเป้าหมายการแชร์ของแอปเมื่อผู้ใช้แชร์จากภายในแอป เนื่องจากผู้ใช้มีแนวโน้มที่จะแชร์ภายนอกแอป
เพิ่ม Intent.EXTRA_EXCLUDE_COMPONENTS
ลงใน Intent หลังจากเรียกใช้ Intent.createChooser()
Kotlin
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) }
Java
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()
โดยทำดังนี้
Kotlin
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)
Java
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
Kotlin
override fun onReceive(context: Context, intent: Intent) { ... val clickedComponent : ComponentName = intent.getParcelableExtra(EXTRA_CHOSEN_COMPONENT); }
Java
@Override public void onReceive(Context context, Intent intent) { ... ComponentName clickedComponent = intent.getParcelableExtra(EXTRA_CHOSEN_COMPONENT); }
เพิ่มการดําเนินการที่กำหนดเองลงในชีตการแชร์
ใน Android 14 (API ระดับ 34) ขึ้นไป แอปจะเพิ่มการดำเนินการที่กำหนดเองลงในหน้าจอการแชร์ของ Android ได้
สร้าง ChooserAction
ด้วย
ChooserAction.Builder
คุณสามารถระบุ PendingIntent
เป็นการดําเนินการที่เรียกใช้เมื่อมีการคลิกไอคอน สร้างอาร์เรย์ที่มีการดำเนินการที่กำหนดเองทั้งหมด แล้วระบุเป็น EXTRA_CHOOSER_CUSTOM_ACTIONS
ของส่วนแบ่ง Intent
Kotlin
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)
Java
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 ของ Android เหมาะสําหรับใช้ส่งข้อมูลไปยังแอปอื่นโดยเป็นส่วนหนึ่งของเวิร์กโฟลว์ที่กําหนดไว้อย่างดี
หากต้องการใช้โปรแกรมแก้ไข Intent ของ Android ให้สร้าง Intent และเพิ่มส่วนเสริมเช่นเดียวกับการเรียกใช้ชีตการแชร์ของ Android แต่อย่าโทรหา Intent.createChooser()
หากมีแอปพลิเคชันที่ติดตั้งไว้หลายรายการซึ่งมีตัวกรองที่ตรงกับACTION_SEND
และประเภท MIME ระบบจะแสดงกล่องโต้ตอบเพื่อคลายความกำกวมที่เรียกว่าตัวแก้ไขความตั้งใจซึ่งช่วยให้ผู้ใช้เลือกเป้าหมายที่จะแชร์ได้ หากมีใบสมัครเดียวที่ตรงกัน ระบบจะเรียกใช้ใบสมัครนั้น
ต่อไปนี้เป็นตัวอย่างวิธีใช้โปรแกรมแก้ไข Intent ของ Android เพื่อส่งข้อความ
Kotlin
val sendIntent: Intent = Intent().apply { action = Intent.ACTION_SEND putExtra(Intent.EXTRA_TEXT, "This is my text to send.") type = "text/plain" } startActivity(sendIntent)
Java
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