การตั้งค่าด่วนคือไทล์ที่แสดงในแผงการตั้งค่าด่วน
ซึ่งแสดงถึงการดำเนินการที่ผู้ใช้แตะเพื่อทำงานที่เกิดซ้ำให้เสร็จอย่างรวดเร็วได้
แอปของคุณสามารถแสดงไทล์ที่กำหนดเองต่อผู้ใช้ผ่านคลาส 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 เป็นบริการที่มีผลผูกพัน 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);
}
หรือคุณจะเพิ่มแฟล็กในส่วน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ภายในองค์ประกอบ<service>สำหรับTileServiceให้เพิ่มองค์ประกอบ<meta-data> 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 ที่ใช้เพื่อดึงข้อมูลบริการนี้ ซึ่งต้องตรงกับผู้ใช้ปัจจุบัน