Kullanıcıların uygulama widget'larını yapılandırmasını sağlama

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ğunda onUpdate() 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:

  1. 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);
    }
    
  2. 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);
    
  3. Widget'ı kullanıcının tercihlerine göre yapılandırın.

  4. Yapılandırma tamamlandığında getInstance(Context) numaralı telefonu arayarak AppWidgetManager:

    Kotlin

    val appWidgetManager = AppWidgetManager.getInstance(context)
    

    Java

    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
    
  5. Widget'ı Çağrı yaparak RemoteViews düzeni updateAppWidget(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);
    
  6. İ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.

Düğme sağ alt köşede görünür
Şekil 1. Widget Yeniden yapılandır düğmesi.
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>