Uygulama widget'ları yapılandırılabilir. Örneğin, bir saat widget'ı kullanıcıların hangi saat diliminin gösterileceğini yapılandırmasına olanak tanıyabilir.
Kullanıcıların widget'ınızın ayarlarını yapılandırmasına izin vermek istiyorsanız bir widget yapılandırması Activity
oluşturun. Bu etkinlik, uygulama widget'ı ana makinesi tarafından widget oluşturulduğunda veya daha sonra, belirttiğiniz yapılandırma seçeneklerine bağlı olarak otomatik olarak başlatılır.
Yapılandırma etkinliğini beyan etme
Yapılandırma etkinliğini Android manifest dosyasında normal bir etkinlik olarak tanımlayın. Uygulama widget'ı, ACTION_APPWIDGET_CONFIGURE
işlemiyle başlatır. Bu nedenle, etkinliğin bu intent'i kabul etmesi gerekir. Örnek:
<activity android:name=".ExampleAppWidgetConfigurationActivity">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
</intent-filter>
</activity>
Etkinliği AppWidgetProviderInfo.xml
dosyasında android:configure
özelliğiyle tanımlayın. Daha fazla bilgi için:
bu dosyayı beyan etmeniz gerekir. Elektronik tablo
kullanarak yapılmış
yapılandırma etkinliğini bildirme:
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
...
android:configure="com.example.android.ExampleAppWidgetConfigurationActivity"
... >
</appwidget-provider>
Başlatıcı, bu dosyaya paket kapsamınızın dışından referans verir.
Yapılandırma etkinliği başlatmak için tüm yapmanız gereken bu. Daha sonra ve gerçek etkinliği uygulamaya başlayabilirsiniz.
Yapılandırma etkinliğini uygulama
Etkinliği uygularken dikkate almanız gereken iki önemli nokta vardır:
- Uygulama widget'ı ana makine, yapılandırma etkinliğini çağırır ve yapılandırma etkinliği her zaman bir sonuç döndürmelidir. Sonuç, etkinliği başlatan intent tarafından iletilen uygulama widget'ı kimliğini içermelidir. Bu kimlik, intent ekstralarına
EXTRA_APPWIDGET_ID
olarak kaydedilir. - Sistem,
ACTION_APPWIDGET_UPDATE
bir yapılandırma etkinliği başlatıldığında yalnızca Widget oluşturulduğundaonUpdate()
yöntemini çağırın.AppWidgetManager
simgesini tıklayın. AncakonUpdate()
, sonraki güncellemeler için çağrılır. Yalnızca ilk kez atlanır.
Bir widget'ı güncelleyin.
Widget'ı yapılandırma etkinliğinden güncelleme
Widget'lar bir yapılandırma etkinliği kullandığında
widget'ı güncelleme etkinliği. Bunu doğrudan AppWidgetManager
üzerinden güncelleme isteğinde bulunarak yapabilirsiniz.
Aşağıda, widget'ı doğru bir şekilde güncelleme ve yapılandırma etkinliği:
Etkinliği başlatan intent'ten uygulama widget'ı kimliğini alın:
Kotlin
val appWidgetId = intent?.extras?.getInt( AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID ) ?: AppWidgetManager.INVALID_APPWIDGET_ID
Java
Intent intent = getIntent(); Bundle extras = intent.getExtras(); int appWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; if (extras != null) { appWidgetId = extras.getInt( AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); }
Etkinlik sonucunu
RESULT_CANCELED
olarak ayarlayın.Bu şekilde, kullanıcı sona ulaşmadan etkinlikten ayrılırsa sistem, yapılandırmanın iptal edildiğini uygulama widget'ı ana makinesine bildirir ve düzenleyen kullanıcı widget'ı eklemez:
Kotlin
val resultValue = Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId) setResult(Activity.RESULT_CANCELED, resultValue)
Java
int resultValue = new Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); setResult(Activity.RESULT_CANCELED, resultValue);
Widget'ı kullanıcının tercihlerine göre yapılandırın.
Yapılandırma tamamlandığında
getInstance(Context)
numaralı telefonu arayarakAppWidgetManager
:Kotlin
val appWidgetManager = AppWidgetManager.getInstance(context)
Java
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
updateAppWidget(int,RemoteViews)
çağrısını yaparak widget'ıRemoteViews
düzeniyle güncelleyin:Kotlin
val views = RemoteViews(context.packageName, R.layout.example_appwidget) appWidgetManager.updateAppWidget(appWidgetId, views)
Java
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.example_appwidget); appWidgetManager.updateAppWidget(appWidgetId, views);
Dönüş niyetini oluşturun, etkinlik sonucuyla ayarlayın ve etkinliği tamamlayın:
Kotlin
val resultValue = Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId) setResult(Activity.RESULT_OK, resultValue) finish()
Java
Intent resultValue = new Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); setResult(RESULT_OK, resultValue); finish();
Örnek için GitHub'daki ListWidgetConfigureActivity.kt
örnek sınıfına bakın.
Widget yapılandırma seçenekleri
Varsayılan olarak uygulama widget'ı ana makinesi, yapılandırma etkinliğini yalnızca kullanıcı widget'ı ana ekranına ekledikten hemen sonra bir kez başlatır. Ancak kullanıcıların mevcut widget'ları yeniden yapılandırmasına olanak tanıyan veya varsayılan bir widget yapılandırması sağlayarak ilk widget yapılandırmasını atlamanıza olanak tanıyan seçenekler belirleyebilirsiniz.
Kullanıcıların yerleştirilmiş widget'ları yeniden yapılandırmasını etkinleştir
Kullanıcıların mevcut widget'ları yeniden yapılandırmasına izin vermek için appwidget-provider
öğesinin widgetFeatures
özelliğinde reconfigurable
işaretini belirtin. Daha fazla bilgi için AppWidgetProviderInfo.xml
dosyasını bildirme kılavuzunu inceleyin. Örnek:
<appwidget-provider
android:configure="com.myapp.ExampleAppWidgetConfigurationActivity"
android:widgetFeatures="reconfigurable">
</appwidget-provider>
Kullanıcılar & widget'ı basılı tutup Şu etikete sahip Yeniden yapılandır düğmesi 1'dir.

Widget'ın varsayılan yapılandırmasını kullan
Kullanıcıların
adımını attım. Bunu yapmak için hem
configuration_optional
ve reconfigurable
işaretlerini widgetFeatures
alanına ekleyin. Bu,
Kullanıcı widget'ı ekledikten sonra yapılandırma etkinliğini başlatmak. Bahsedildiği gibi
Kullanıcı önceden Widget'ı yeniden yapılandırabilir
daha fazla bilgi edineceksiniz. Örneğin, bir saat widget'ı ilk yapılandırmayı atlayabilir ve
varsayılan olarak cihazın saat dilimini gösterir.
Yapılandırma etkinliğinizi hem yapılandırılabilir ve isteğe bağlı:
<appwidget-provider
android:configure="com.myapp.ExampleAppWidgetConfigurationActivity"
android:widgetFeatures="reconfigurable|configuration_optional">
</appwidget-provider>