Menyematkan widget Sekilas dalam aplikasi

Dengan Android 8.0 (level API 26) dan yang lebih tinggi, Anda dapat mengizinkan pengguna menyematkan widget ke layar utama mereka dalam aplikasi Anda. Mempromosikan widget secara langsung dalam aplikasi Anda adalah cara yang bagus untuk meningkatkan interaksi pengguna, terutama setelah pengguna menyelesaikan tugas terkait, atau saat pengguna berulang kali mengakses fitur dalam aplikasi Anda.

Membuat Permintaan Pin

Untuk memulai penyematan widget, gunakan metode requestPinGlanceAppWidget dari class GlanceAppWidgetManager. Untuk aplikasi yang berjalan di versi Android yang lebih rendah, fungsi ini akan menampilkan nilai salah (false). Namun, jika permintaan berhasil dikirim ke sistem, nilai benar (true) akan ditampilkan.

Berikut adalah contoh cara membuat permintaan pin:

@Composable
fun AnInAppComposable() {
    val context = LocalContext.current
    val coroutineScope = rememberCoroutineScope()
    Button(
        onClick = {
            coroutineScope.launch {
                GlanceAppWidgetManager(context).requestPinGlanceAppWidget(
                    receiver = MyWidgetReceiver::class.java,
                    preview = MyWidget(),
                    previewState = DpSize(245.dp, 115.dp)
                )
            }
        }
    ) {}
}

Dalam contoh ini, MyWidgetReceiver adalah class yang menerima callback widget, dan MyWidget adalah widget Glance yang ingin Anda sematkan. successCallback adalah PendingIntent yang dipicu saat widget berhasil disematkan.

Menangani Respons Permintaan Pin

Saat pengguna merespons dialog permintaan pin, aplikasi Anda akan menerima respons. Jika pengguna menyetujui permintaan, widget Anda akan disematkan ke layar utama mereka, dan successCallback PendingIntent akan dipicu. Jika pengguna menolak permintaan, tidak ada yang terjadi.

Penting untuk diperhatikan bahwa successCallback hanya dipicu jika widget berhasil ditambahkan ke layar utama. Pintasan tidak dipicu jika pengguna menolak permintaan atau jika peluncur tidak mendukung penyematan.