Skip to content

Latest commit

 

History

History
58 lines (42 loc) · 1.74 KB

File metadata and controls

58 lines (42 loc) · 1.74 KB

← Back to main index | ← Back to folder


38. App Shortcuts & Widgets

App Shortcuts

Tip

Define in shortcuts.xml with shortcutId, icon, labels. Register in manifest via <meta-data>. Launcher shows long-press menu with quick actions.

Launcher shortcuts · Intent-based · Quick actions

💻 Code Example
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
    <shortcut android:shortcutId="compose" android:icon="@drawable/ic_compose">
        <intent android:action="android.intent.action.MAIN" android:targetClass="com.example.ComposeActivity" />
    </shortcut>
</shortcuts>

Home Screen Widgets

Tip

Extend AppWidgetProvider, override onUpdate(), use RemoteViews to build UI. Register receiver in manifest with APPWIDGET_UPDATE action.

RemoteViews · AppWidgetProvider · Limited widgets · Home screen

💻 Code Example
class MyWidgetProvider : AppWidgetProvider() {
    override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) {
        appWidgetIds.forEach { id -> updateAppWidget(context, appWidgetManager, id) }
    }
    private fun updateAppWidget(context: Context, mgr: AppWidgetManager, widgetId: Int) {
        val views = RemoteViews(context.packageName, R.layout.widget_layout)
        views.setTextViewText(R.id.text, "Hello!")
        val intent = Intent(context, MainActivity::class.java)
        val pi = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE)
        views.setOnClickPendingIntent(R.id.button, pi)
        mgr.updateAppWidget(widgetId, views)
    }
}