การตั้งค่าด่วนคือการ์ดที่แสดงในแผงการตั้งค่าด่วน
ซึ่งแสดงถึงการดำเนินการที่ผู้ใช้แตะเพื่อทำงานที่ทำซ้ำๆ ให้เสร็จอย่างรวดเร็ว
แอปของคุณสามารถแสดงการ์ดที่กำหนดเองแก่ผู้ใช้ผ่านคลาส TileService
และใช้ออบเจ็กต์ Tile เพื่อติดตามสถานะของการ์ด เช่น คุณสามารถสร้างการ์ดที่ช่วยให้ผู้ใช้เปิดหรือปิด VPN ที่แอปของคุณให้บริการได้
ตัดสินใจว่าจะสร้างการ์ดเมื่อใด
เราขอแนะนำให้สร้างการ์ดสำหรับฟังก์ชันการทำงานเฉพาะที่คุณคาดหวังว่าผู้ใช้จะเข้าถึงบ่อยๆ หรือต้องการเข้าถึงอย่างรวดเร็ว (หรือทั้ง 2 อย่าง) การ์ดที่มีประสิทธิภาพมากที่สุดคือการ์ดที่มีคุณสมบัติทั้ง 2 อย่างนี้ ซึ่งช่วยให้เข้าถึงการดำเนินการที่ทำบ่อยๆ ได้อย่างรวดเร็ว
ตัวอย่างเช่น คุณสามารถสร้างการ์ดสำหรับแอปฟิตเนสที่ช่วยให้ผู้ใช้เริ่มเซสชันการออกกำลังกายได้อย่างรวดเร็ว อย่างไรก็ตาม เราไม่แนะนำให้สร้างการ์ดสำหรับแอปเดียวกันที่ช่วยให้ผู้ใช้ดูประวัติการออกกำลังกายทั้งหมดได้
เราขอแนะนำให้หลีกเลี่ยงแนวทางปฏิบัติบางอย่างต่อไปนี้เพื่อช่วยปรับปรุงการค้นพบและการใช้งานการ์ดได้ง่ายขึ้น
หลีกเลี่ยงการใช้การ์ดเพื่อเปิดแอป ให้ใช้ทางลัดของแอปหรือตัวเปิดแอปมาตรฐาน แทน
หลีกเลี่ยงการใช้การ์ดสำหรับการดำเนินการของผู้ใช้แบบครั้งเดียว ให้ใช้ทางลัดของแอปหรือการ แจ้งเตือนแทน
หลีกเลี่ยงการสร้างการ์ดมากเกินไป เราขอแนะนำให้สร้างการ์ดไม่เกิน 2 รายการต่อแอป ให้ใช้ทางลัดของแอปแทน
หลีกเลี่ยงการใช้การ์ดที่แสดงข้อมูลแต่ผู้ใช้โต้ตอบไม่ได้ ให้ใช้การแจ้งเตือนหรือวิดเจ็ตแทน
สร้างการ์ด
หากต้องการสร้างการ์ด คุณต้องสร้างไอคอนการ์ดที่เหมาะสมก่อน จากนั้นสร้างและประกาศ TileService ในไฟล์ Manifest ของแอป
ตัวอย่างการตั้งค่าด่วนแสดงตัวอย่างวิธีสร้าง และจัดการการ์ด
สร้างไอคอนที่กำหนดเอง
คุณจะต้องระบุไอคอนที่กำหนดเองซึ่งจะแสดงในการ์ดในแผงการตั้งค่าด่วน (คุณจะเพิ่มไอคอนนี้เมื่อประกาศ TileService ซึ่งอธิบายไว้ในส่วนถัดไป) ไอคอนต้องเป็นสีขาวทึบที่มี
พื้นหลังโปร่งใส ขนาด 24 x 24dp และอยู่ในรูปแบบ
VectorDrawable
สร้างไอคอนที่สื่อถึงวัตถุประสงค์ของการ์ดด้วยภาพ ซึ่งจะช่วยให้ผู้ใช้ระบุได้ง่ายว่าการ์ดของคุณตรงกับความต้องการหรือไม่ ตัวอย่างเช่น คุณอาจสร้างไอคอนนาฬิกาจับเวลาสำหรับการ์ดของแอปฟิตเนสที่ช่วยให้ผู้ใช้เริ่มเซสชันการออกกำลังกายได้
สร้างและประกาศ TileService
สร้างบริการสำหรับการ์ดที่ขยายคลาส TileService
Kotlin
class MyQSTileService: TileService() { // Called when the user adds your tile. override fun onTileAdded() { super.onTileAdded() } // Called when your app can update your tile. override fun onStartListening() { super.onStartListening() } // Called when your app can no longer update your tile. override fun onStopListening() { super.onStopListening() } // Called when the user taps on your tile in an active or inactive state. override fun onClick() { super.onClick() } // Called when the user removes your tile. override fun onTileRemoved() { super.onTileRemoved() } }
Java
public class MyQSTileService extends TileService { // Called when the user adds your tile. @Override public void onTileAdded() { super.onTileAdded(); } // Called when your app can update your tile. @Override public void onStartListening() { super.onStartListening(); } // Called when your app can no longer update your tile. @Override public void onStopListening() { super.onStopListening(); } // Called when the user taps on your tile in an active or inactive state. @Override public void onClick() { super.onClick(); } // Called when the user removes your tile. @Override public void onTileRemoved() { super.onTileRemoved(); } }
ประกาศ TileService ในไฟล์ Manifest ของแอป เพิ่มชื่อและป้ายกำกับของ TileService ไอคอนที่กำหนดเองที่คุณสร้างขึ้นในส่วนก่อนหน้า และสิทธิ์ที่เหมาะสม
<service
android:name=".MyQSTileService"
android:exported="true"
android:label="@string/my_default_tile_label" // 18-character limit.
android:icon="@drawable/my_default_icon_label"
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
<intent-filter>
<action android:name="android.service.quicksettings.action.QS_TILE" />
</intent-filter>
</service>
จัดการ TileService
เมื่อสร้างและประกาศ TileService ในไฟล์ Manifest ของแอปแล้ว คุณต้องจัดการสถานะของบริการ
TileService เป็น บริการที่มีผลผูกพัน TileService จะมีผลผูกพันเมื่อแอปขอหรือเมื่อระบบต้องสื่อสารกับบริการ วงจรของบริการที่มีผลผูกพันโดยทั่วไป
จะมีเมธอดเรียกกลับ 4 รายการ ได้แก่
onCreate(), onBind(), onUnbind() และ
onDestroy() ระบบจะเรียกใช้เมธอดเหล่านี้ทุกครั้งที่บริการเข้าสู่ระยะใหม่ของวงจร
ภาพรวมวงจร TileService
นอกเหนือจากเมธอดเรียกกลับที่ควบคุมวงจรของบริการที่มีผลผูกพันแล้ว คุณต้องใช้เมธอดอื่นๆ ที่เฉพาะเจาะจงกับวงจร TileService ระบบอาจเรียกใช้เมธอดเหล่านี้
ภายนอก onCreate() และ onDestroy() เนื่องจากระบบจะเรียกใช้เมธอดวงจร Service
และเมธอดวงจร TileService ใน 2
เธรดแบบอะซิงโครนัสแยกกัน
วงจร TileService มีเมธอดต่อไปนี้ ซึ่งระบบจะเรียกใช้ทุกครั้งที่ TileService เข้าสู่ระยะใหม่ของวงจร
onTileAdded(): ระบบจะเรียกใช้เมธอดนี้เฉพาะเมื่อผู้ใช้เพิ่มการ์ดของคุณเป็นครั้งแรก และหากผู้ใช้นำการ์ดของคุณออกแล้วเพิ่มอีกครั้ง นี่เป็นเวลาที่ดีที่สุดในการเริ่มต้นใช้งานแบบครั้งเดียว อย่างไรก็ตาม การดำเนินการนี้อาจไม่ครอบคลุมการเริ่มต้นใช้งานที่จำเป็นทั้งหมดonStartListening()และonStopListening(): ระบบจะเรียกใช้เมธอดเหล่านี้ ทุกครั้งที่แอปอัปเดตการ์ด และเรียกใช้บ่อยๆTileServiceจะยังคงมีผลผูกพันระหว่างonStartListening()และonStopListening()ซึ่งช่วยให้แอปแก้ไขการ์ดและส่งการอัปเดตได้onTileRemoved(): ระบบจะเรียกใช้เมธอดนี้ก็ต่อเมื่อผู้ใช้นำการ์ดของคุณออก
เลือกโหมดการฟัง
TileService จะฟังในโหมด แอ็กทีฟ หรือโหมด ไม่แอ็กทีฟ เราขอแนะนำให้ใช้โหมดแอ็กทีฟ ซึ่งคุณจะต้องประกาศในไฟล์ Manifest ของแอป มิฉะนั้น TileService จะอยู่ในโหมดมาตรฐานและไม่จำเป็นต้องประกาศ
อย่าสันนิษฐานว่า TileService จะทำงานนอกเหนือจากเมธอดคู่ onStartListening() และ onStopListening()
โหมดแอ็กทีฟ (แนะนำ)
ใช้โหมดแอ็กทีฟสำหรับ TileService ที่ฟังและตรวจสอบสถานะในกระบวนการของตัวเอง TileService ในโหมดแอ็กทีฟจะมีผลผูกพันสำหรับ onTileAdded(), onTileRemoved(), เหตุการณ์การแตะ และเมื่อกระบวนการของแอปขอ
เราขอแนะนำให้ใช้โหมดแอ็กทีฟหาก TileService ได้รับการแจ้งเตือนเมื่อกระบวนการของตัวเองควรจะอัปเดตสถานะการ์ด การ์ดแอ็กทีฟจะจำกัดภาระงานของระบบเนื่องจากไม่จำเป็นต้องมีผลผูกพันทุกครั้งที่แผงการตั้งค่าด่วนปรากฏแก่ผู้ใช้
คุณสามารถเรียกใช้เมธอดแบบคงที่ TileService.requestListeningState() เพื่อ
ขอให้เริ่มสถานะการฟังและรับเมธอดเรียกกลับไปยัง
onStartListening()
คุณประกาศโหมดแอ็กทีฟได้โดยเพิ่ม META_DATA_ACTIVE_TILE ลงใน
ไฟล์ Manifest ของแอป
<service ...>
<meta-data android:name="android.service.quicksettings.ACTIVE_TILE"
android:value="true" />
...
</service>
โหมดไม่แอ็กทีฟ
โหมดไม่แอ็กทีฟคือโหมดมาตรฐาน TileService จะอยู่ในโหมดไม่แอ็กทีฟหากมีผลผูกพันทุกครั้งที่การ์ดปรากฏแก่ผู้ใช้ ซึ่งหมายความว่าระบบอาจสร้างและผูก TileService อีกครั้งในบางครั้งที่อยู่นอกเหนือการควบคุม นอกจากนี้ ระบบยังอาจยกเลิกการผูกและทำลายบริการเมื่อผู้ใช้ไม่ได้ดูการ์ด
แอปจะได้รับเมธอดเรียกกลับไปยัง onStartListening() หลังจากที่ผู้ใช้เปิดแผงการตั้งค่าด่วน คุณสามารถอัปเดตออบเจ็กต์ Tile ได้หลายครั้งตามต้องการระหว่าง onStartListening() และ onStopListening()
คุณไม่จำเป็นต้องประกาศโหมดไม่แอ็กทีฟ เพียงแค่ไม่ต้องเพิ่ม META_DATA_ACTIVE_TILE ลงในไฟล์ Manifest ของแอป
ภาพรวมสถานะการ์ด
หลังจากที่ผู้ใช้เพิ่มการ์ดแล้ว การ์ดจะอยู่ในสถานะใดสถานะหนึ่งต่อไปนี้เสมอ
STATE_ACTIVE: แสดงสถานะเปิดหรือเปิดใช้ ผู้ใช้สามารถโต้ตอบกับการ์ดได้ขณะที่การ์ดอยู่ในสถานะนี้ตัวอย่างเช่น สำหรับการ์ดแอปฟิตเนสที่ช่วยให้ผู้ใช้เริ่มเซสชันการออกกำลังกายแบบจับเวลาได้
STATE_ACTIVEจะหมายความว่าผู้ใช้เริ่มเซสชันการออกกำลังกายแล้วและตัวจับเวลากำลังทำงานSTATE_INACTIVE: แสดงสถานะปิดหรือหยุดชั่วคราว ผู้ใช้สามารถโต้ตอบกับการ์ดได้ขณะที่การ์ดอยู่ในสถานะนี้หากใช้ตัวอย่างการ์ดแอปฟิตเนสอีกครั้ง การ์ดใน
STATE_INACTIVEจะหมายความว่าผู้ใช้ยังไม่ได้เริ่มเซสชันการออกกำลังกาย แต่สามารถทำได้หากต้องการSTATE_UNAVAILABLE: แสดงสถานะไม่พร้อมใช้งานชั่วคราว ผู้ใช้ไม่สามารถโต้ตอบกับการ์ดได้ขณะที่การ์ดอยู่ในสถานะนี้ตัวอย่างเช่น การ์ดใน
STATE_UNAVAILABLEหมายความว่าการ์ดไม่พร้อมใช้งานสำหรับผู้ใช้ในขณะนี้ด้วยเหตุผลบางประการ
ระบบจะตั้งค่าสถานะเริ่มต้นของออบเจ็กต์ Tile เท่านั้น คุณตั้งค่าสถานะของออบเจ็กต์ Tile ตลอดวงจรที่เหลือ
ระบบอาจย้อมสีไอคอนและพื้นหลังของการ์ดเพื่อแสดงสถานะของออบเจ็กต์ Tile ออบเจ็กต์ Tile ที่ตั้งค่าเป็น STATE_ACTIVE จะมีสีเข้มที่สุด ส่วน STATE_INACTIVE และ STATE_UNAVAILABLE จะมีสีอ่อนลงเรื่อยๆ เฉดสีที่แน่นอนจะขึ้นอยู่กับผู้ผลิตและเวอร์ชัน
อัปเดตการ์ด
คุณสามารถอัปเดตการ์ดได้เมื่อได้รับเมธอดเรียกกลับไปยัง onStartListening()
การ์ดสามารถอัปเดตได้อย่างน้อย 1 ครั้งจนกว่าจะได้รับเมธอดเรียกกลับไปยัง onStopListening() ทั้งนี้ขึ้นอยู่กับโหมดของการ์ด
ในโหมดแอ็กทีฟ คุณสามารถอัปเดตการ์ดได้ 1 ครั้งก่อนที่จะได้รับเมธอดเรียกกลับไปยัง onStopListening() ในโหมดไม่แอ็กทีฟ คุณสามารถอัปเดตการ์ดได้หลายครั้งตามต้องการระหว่าง onStartListening() และ onStopListening()
คุณสามารถเรียกข้อมูลออบเจ็กต์ Tile ได้โดยเรียกใช้ getQsTile() หากต้องการอัปเดตช่องที่เฉพาะเจาะจงของออบเจ็กต์ Tile ให้เรียกใช้เมธอดต่อไปนี้
คุณต้องเรียกใช้ updateTile() เพื่ออัปเดตการ์ดเมื่อตั้งค่า
ช่องของออบเจ็กต์ Tile เป็นค่าที่ถูกต้องแล้ว ซึ่งจะทำให้ระบบแยกวิเคราะห์ข้อมูลการ์ดที่อัปเดตแล้วและอัปเดต UI
Kotlin
data class StateModel(val enabled: Boolean, val label: String, val icon: Icon) override fun onStartListening() { super.onStartListening() val state = getStateFromService() qsTile.label = state.label qsTile.contentDescription = tile.label qsTile.state = if (state.enabled) Tile.STATE_ACTIVE else Tile.STATE_INACTIVE qsTile.icon = state.icon qsTile.updateTile() }
Java
public class StateModel { final boolean enabled; final String label; final Icon icon; public StateModel(boolean e, String l, Icon i) { enabled = e; label = l; icon = i; } } @Override public void onStartListening() { super.onStartListening(); StateModel state = getStateFromService(); Tile tile = getQsTile(); tile.setLabel(state.label); tile.setContentDescription(state.label); tile.setState(state.enabled ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE); tile.setIcon(state.icon); tile.updateTile(); }
จัดการการแตะ
ผู้ใช้สามารถแตะการ์ดเพื่อทริกเกอร์การดำเนินการได้หากการ์ดอยู่ใน STATE_ACTIVE หรือ STATE_INACTIVE จากนั้นระบบจะเรียกใช้เมธอดเรียกกลับ
onClick() ของแอป
เมื่อแอปได้รับเมธอดเรียกกลับไปยัง onClick() แล้ว แอปจะเปิดกล่องโต้ตอบหรือกิจกรรม ทริกเกอร์งานเบื้องหลัง หรือเปลี่ยนสถานะของการ์ดได้
Kotlin
var clicks = 0 override fun onClick() { super.onClick() counter++ qsTile.state = if (counter % 2 == 0) Tile.STATE_ACTIVE else Tile.STATE_INACTIVE qsTile.label = "Clicked $counter times" qsTile.contentDescription = qsTile.label qsTile.updateTile() }
Java
int clicks = 0; @Override public void onClick() { super.onClick(); counter++; Tile tile = getQsTile(); tile.setState((counter % 2 == 0) ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE); tile.setLabel("Clicked " + counter + " times"); tile.setContentDescription(tile.getLabel()); tile.updateTile(); }
เปิดกล่องโต้ตอบ
showDialog() จะยุบแผงการตั้งค่าด่วนและแสดงกล่องโต้ตอบ
ใช้กล่องโต้ตอบเพื่อเพิ่มบริบทให้กับการดำเนินการหากต้องมีการป้อนข้อมูลเพิ่มเติมหรือความยินยอมของผู้ใช้
เปิดกิจกรรม
startActivityAndCollapse() จะเริ่มกิจกรรมขณะยุบแผง กิจกรรมมีประโยชน์หากมีข้อมูลโดยละเอียดเพิ่มเติมที่จะแสดงนอกเหนือจากภายในกล่องโต้ตอบ หรือหากการดำเนินการของคุณมีการโต้ตอบสูง
หากแอปต้องมีการโต้ตอบของผู้ใช้จำนวนมาก แอปควรเปิดกิจกรรมเป็นทางเลือกสุดท้ายเท่านั้น ให้ลองใช้กล่องโต้ตอบหรือปุ่มสลับแทน
การแตะการ์ดค้างไว้จะแสดงหน้าจอข้อมูลแอป ให้ผู้ใช้ หากต้องการลบล้าง
ลักษณะการทำงานนี้และเปิดกิจกรรมสำหรับการตั้งค่ากำหนดลักษณะแทน ให้เพิ่ม
<intent-filter>ลงในกิจกรรมรายการใดรายการหนึ่งด้วย
ACTION_QS_TILE_PREFERENCES
ตั้งแต่ Android API 28 เป็นต้นไป PendingIntent ต้องมี Intent.FLAG_ACTIVITY_NEW_TASK ดังนี้
if (Build.VERSION.SDK_INT >= 28) {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
หรือคุณจะเพิ่ม Flag ใน AndroidManifest.xml ในส่วน Activity ที่เฉพาะเจาะจงก็ได้
ทำเครื่องหมายการ์ดเป็นสลับได้
เราขอแนะนำให้ทำเครื่องหมายการ์ดเป็นสลับได้หากการ์ดทำหน้าที่เป็นสวิตช์ 2 สถานะเป็นหลัก (ซึ่งเป็นลักษณะการทำงานที่พบได้บ่อยที่สุดของการ์ด) การดำเนินการนี้จะช่วยให้ข้อมูลเกี่ยวกับลักษณะการทำงานของการ์ดแก่ระบบปฏิบัติการและปรับปรุงการช่วยเหลือพิเศษโดยรวม
ตั้งค่าข้อมูลเมตา TOGGLEABLE_TILE เป็น true เพื่อทำเครื่องหมายการ์ดเป็นสลับได้
<service ...>
<meta-data android:name="android.service.quicksettings.TOGGLEABLE_TILE"
android:value="true" />
</service>
ดำเนินการเฉพาะการดำเนินการที่ปลอดภัยในอุปกรณ์ที่ล็อกอย่างปลอดภัย
การ์ดอาจแสดงอยู่เหนือหน้าจอล็อกในอุปกรณ์ที่ล็อก หากการ์ด
มีข้อมูลที่ละเอียดอ่อน ให้ตรวจสอบค่า isSecure() เพื่อ
ดูว่าอุปกรณ์อยู่ในสถานะปลอดภัยหรือไม่ และ TileService ควร
เปลี่ยนลักษณะการทำงานตามนั้น
หากการดำเนินการของการ์ดปลอดภัยที่จะดำเนินการขณะล็อก ให้ใช้ startActivity()
เพื่อเปิดกิจกรรมเหนือหน้าจอล็อก
หากการดำเนินการของการ์ดไม่ปลอดภัย ให้ใช้ unlockAndRun() เพื่อแจ้งให้ผู้ใช้
ปลดล็อกอุปกรณ์ หากสำเร็จ ระบบจะเรียกใช้ออบเจ็กต์
Runnable ที่คุณส่งผ่านไปยังเมธอดนี้
จัดหมวดหมู่การ์ด
คุณสามารถจัดหมวดหมู่การ์ดเพื่อปรับปรุงประสบการณ์ของผู้ใช้ในการตั้งค่าด่วน ระบบจะจัดระเบียบการ์ดเป็นหมวดหมู่ต่างๆ เช่น การเชื่อมต่อ จอแสดงผล และความเป็นส่วนตัว ระบบใช้หมวดหมู่เหล่านี้เพื่อจัดเรียงและจัดกลุ่มการ์ดในโหมดแก้ไขการตั้งค่าด่วน ซึ่งช่วยให้ผู้ใช้ค้นหาและจัดการได้ง่ายขึ้น
การใช้งาน
หากต้องการระบุหมวดหมู่สำหรับ TileService ให้เพิ่มช่องข้อมูลเมตาลงในการประกาศบริการในไฟล์ AndroidManifest.xml ดังนี้
- ใน
AndroidManifest.xmlให้เพิ่มองค์ประกอบ<meta-data>ภายในองค์ประกอบ<service>สำหรับTileService android:name: ตั้งค่านี้เป็นandroid.service.quicksettings.TILE_CATEGORYandroid:value: กำหนดค่าคงที่ของหมวดหมู่ที่กำหนดไว้ล่วงหน้า เช่นandroid.service.quicksettings.CATEGORY_CONNECTIVITYหรือandroid.service.quicksettings.CATEGORY_DISPLAY
ดังที่แสดงในตัวอย่างต่อไปนี้
<service
android:name=".MyConnectivityTileService"
[...]
>
<meta-data android:name="android.service.quicksettings.TILE_CATEGORY"
android:value="android.service.quicksettings.CATEGORY_CONNECTIVITY" />
</service>
API มีชุดหมวดหมู่ที่กำหนดไว้ล่วงหน้าให้เลือก หมวดหมู่เหล่านี้กำหนดเป็นค่าคงที่สตริงภายในคลาส TileService
หากไม่ได้ระบุหมวดหมู่ ระบบจะกำหนดหมวดหมู่เริ่มต้นโดยอัตโนมัติ ดังนี้
- จากแอประบบ: สำหรับการ์ดที่เป็นส่วนหนึ่งของแอปพลิเคชันระบบ
- จากแอปที่คุณติดตั้ง: สำหรับการ์ดจากแอปพลิเคชันที่ผู้ใช้ติดตั้ง
แม้ว่าอุปกรณ์ Google Pixel จะใช้หมวดหมู่ในการตั้งค่าด่วน แต่ OEM สามารถเลือกใช้หรือไม่ใช้ข้อมูลหมวดหมู่นี้ใน UI ของระบบตามลำดับก็ได้
แจ้งให้ผู้ใช้เพิ่มการ์ด
หากต้องการเพิ่มการ์ดด้วยตนเอง ผู้ใช้ต้องทำตามขั้นตอนต่อไปนี้
- ปัดลงเพื่อเปิดแผงการตั้งค่าด่วน
- แตะปุ่มแก้ไข
- เลื่อนดูการ์ดทั้งหมดในอุปกรณ์จนกว่าจะพบการ์ดของคุณ
- แตะการ์ดค้างไว้ แล้วลากไปยังรายการการ์ดที่ใช้งานอยู่
นอกจากนี้ ผู้ใช้ยังย้ายหรือนำการ์ดของคุณออกได้ทุกเมื่อ
ตั้งแต่ Android 13 เป็นต้นไป คุณสามารถใช้เมธอด requestAddTileService()
เพื่อให้ผู้ใช้เพิ่มการ์ดลงในอุปกรณ์ได้ง่ายขึ้นมาก เมธอดนี้จะแจ้งให้ผู้ใช้ทราบถึงคำขอให้เพิ่มการ์ดลงในแผงการตั้งค่าด่วนโดยตรงอย่างรวดเร็ว ข้อความแจ้งจะมีชื่อแอปพลิเคชัน ป้ายกำกับ และไอคอนที่ระบุ
public void requestAddTileService (
ComponentName tileServiceComponentName,
CharSequence tileLabel,
Icon icon,
Executor resultExecutor,
Consumer<Integer> resultCallback
)
เมธอดเรียกกลับจะมีข้อมูลว่ามีการเพิ่มการ์ดหรือไม่ ไม่ได้เพิ่ม หากมีการ์ดอยู่แล้ว หรือหากเกิดข้อผิดพลาด
โปรดใช้ดุลพินิจในการตัดสินใจว่าจะแจ้งให้ผู้ใช้ทราบเมื่อใดและบ่อยเพียงใด เราขอแนะนำให้เรียกใช้ requestAddTileService() ในบริบทเท่านั้น เช่น เมื่อผู้ใช้โต้ตอบกับฟีเจอร์ที่การ์ดของคุณช่วยอำนวยความสะดวกเป็นครั้งแรก
ระบบสามารถเลือกที่จะหยุดประมวลผลคำขอสำหรับ
ComponentNameที่ระบุได้หากผู้ใช้ปฏิเสธคำขอดังกล่าวหลายครั้งก่อนหน้านี้ ระบบจะกำหนดผู้ใช้จาก Context ที่ใช้เพื่อเรียกข้อมูลบริการนี้ โดยต้องตรงกับผู้ใช้ปัจจุบัน