Uygulama widget'ları yapılandırılabilir. Örneğin, bir saat widget'ı kullanıcıların görüntülenecek saat dilimini yapılandırma.
Kullanıcıların widget ayarlarınızı yapılandırmasına izin vermek istiyorsanız widget oluşturun
Activity
yapılandırması. Bu etkinlik
Widget oluşturulduğunda uygulama widget'ı ana makinesi tarafından otomatik olarak başlatılır
yapılandırma seçeneklerine bağlı olarak
belirtin.
Yapılandırma etkinliğini bildirme
Yapılandırma etkinliğini, Android manifest dosyasında normal etkinlik olarak bildir
dosyası olarak kaydedebilirsiniz. Uygulama widget'ı ana makinesi, widget'ı
ACTION_APPWIDGET_CONFIGURE
işlemi olduğundan, etkinliğin bu niyeti kabul etmesi gerekir. Örnek:
<activity android:name=".ExampleAppWidgetConfigurationActivity">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
</intent-filter>
</activity>
AppWidgetProviderInfo.xml
dosyasında etkinliği
android:configure
özelliği için de geçerlidir. 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 öğeye 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 unutmamanız gereken iki önemli nokta vardır:
- Uygulama widget'ı ana makinesinde, yapılandırma etkinliğini ve
etkinliği her zaman bir sonuç döndürmelidir. Sonuç, Uygulama Widget'ını içermelidir
Etkinliği başlatan amaç tarafından iletilen kimlik (amaca kaydedilir)
ekstralar
EXTRA_APPWIDGET_ID
. - 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. Ancak,onUpdate()
, sonraki güncellemeler için çağrılır; yalnızca ilk kez.
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. Bu sayede
doğrudan şuradan güncelleme isteğinde bulunarak
AppWidgetManager
.
Aşağıda, widget'ı doğru bir şekilde güncelleme ve yapılandırma etkinliği:
Etkinliği başlatan intent'den App Widget Kimliği'ni 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);
Widget'ı Çağrı yaparak
RemoteViews
düzeniupdateAppWidget(int,RemoteViews)
: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);
İade 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();
Bkz.
ListWidgetConfigureActivity.kt
GitHub'daki sample class'ı inceleyelim.
Widget yapılandırma seçenekleri
Uygulama widget'ı ana makinesi varsayılan olarak yapılandırma etkinliğini yalnızca bir kez başlatır. Kullanıcı widget'ı ana ekranına ekledikten hemen sonra. Ancak, kullanıcıların mevcut widget'ları yeniden yapılandırmalarını veya ilk widget yapılandırmasını atlamak için varsayılan bir widget yapılandırması sağlayın.
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
reconfigurable
CANNOT TRANSLATE
widgetFeatures
appwidget-provider
özelliğine ilişkin bir özelliktir. Uygulamanızla ilgili bilgilerin
Daha fazlası için AppWidgetProviderInfo.xml
dosya
ekleyebilirsiniz. Ö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.
ziyaret edin.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şaretleri widgetFeatures
alanında görünür. 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>