उपयोगकर्ताओं को ऐप्लिकेशन के विजेट कॉन्फ़िगर करने की सुविधा दें

ऐप्लिकेशन विजेट को कॉन्फ़िगर किया जा सकता है. उदाहरण के लिए, घड़ी के विजेट से उपयोगकर्ता कॉन्फ़िगर करें कि किस टाइम ज़ोन को दिखाना है.

अगर आपको उपयोगकर्ताओं को अपने विजेट की सेटिंग कॉन्फ़िगर करने की सुविधा देनी है, तो विजेट बनाएं कॉन्फ़िगरेशन Activity. यह गतिविधि है ऐप्लिकेशन, विजेट होस्ट से अपने-आप लॉन्च हो जाता है. ऐसा तब भी होता है, जब विजेट बनाया जाता है या बाद में, आपके द्वारा सेट किए गए कॉन्फ़िगरेशन विकल्पों के आधार पर तय करें.

कॉन्फ़िगरेशन गतिविधि की जानकारी दें

Android मेनिफ़ेस्ट में, कॉन्फ़िगरेशन गतिविधि को सामान्य गतिविधि के तौर पर बताएं फ़ाइल से लिए जाते हैं. ऐप्लिकेशन विजेट होस्ट, इसे ACTION_APPWIDGET_CONFIGURE कार्रवाई की संभावना है, इसलिए गतिविधि को इस इंटेंट को स्वीकार करना होगा. उदाहरण के लिए:

<activity android:name=".ExampleAppWidgetConfigurationActivity">
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
    </intent-filter>
</activity>

AppWidgetProviderInfo.xml फ़ाइल में गतिविधि का एलान android:configure एट्रिब्यूट की वैल्यू सबमिट करें. इसके बारे में ज़्यादा जानकारी देखें जानकारी देनी होगी. यहां इसका एक उदाहरण दिया गया है कॉन्फ़िगरेशन गतिविधि का एलान कैसे करें:

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    ...
    android:configure="com.example.android.ExampleAppWidgetConfigurationActivity"
    ... >
</appwidget-provider>

पूरी तरह क्वालिफ़ाइड नेमस्पेस के साथ गतिविधि का एलान किया गया है, क्योंकि लॉन्चर इसका रेफ़रंस आपके पैकेज के दायरे के बाहर से देता है.

कॉन्फ़िगरेशन की गतिविधि शुरू करने के लिए, आपको बस इतना ही करना है. इसके बाद, आपको गतिविधि को लागू करना होगा.

कॉन्फ़िगरेशन गतिविधि लागू करें

गतिविधि को लागू करते समय इन दो ज़रूरी बातों को ध्यान में रखना चाहिए:

  • ऐप्लिकेशन विजेट होस्ट, कॉन्फ़िगरेशन गतिविधि और कॉन्फ़िगरेशन को कॉल करता है गतिविधि से हमेशा परिणाम मिलना चाहिए. नतीजे में ऐप्लिकेशन विजेट शामिल होना चाहिए गतिविधि को लॉन्च करने वाले इंटेंट से पास किया गया आईडी—इंटेंट में सेव किया गया इसके रूप में अतिरिक्त EXTRA_APPWIDGET_ID.
  • सिस्टम Google को ACTION_APPWIDGET_UPDATE कॉन्फ़िगरेशन गतिविधि के लॉन्च होने पर ब्रॉडकास्ट होता है, जिसका मतलब है कि वह विजेट बन जाने पर, onUpdate() तरीके को कॉल करें. यह कॉन्फ़िगरेशन गतिविधि की ज़िम्मेदारी है कि वह अपडेट का अनुरोध करे पहली बार विजेट बनाते समय AppWidgetManager. हालांकि, onUpdate() को बाद के अपडेट के लिए कॉल किया जाता है—इसे सिर्फ़ पहली बार.

कॉन्फ़िगरेशन का नतीजा मिल सकता है और विजेट को अपडेट किया जा सकता है.

कॉन्फ़िगरेशन गतिविधि से विजेट को अपडेट करें

जब कोई विजेट किसी कॉन्फ़िगरेशन गतिविधि का इस्तेमाल करता है, तो यह जिम्मेदारी है कॉन्फ़िगरेशन पूरा होने पर विजेट को अपडेट करने की गतिविधि. आप ऐसा कर सकते हैं सीधे वेबसाइट, AppWidgetManager.

विजेट को ठीक से अपडेट करने और विजेट को बंद करने की प्रक्रिया का सारांश यहां दिया गया है कॉन्फ़िगरेशन गतिविधि:

  1. गतिविधि को लॉन्च करने वाले इंटेंट से, ऐप्लिकेशन विजेट आईडी पाएं:

    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. गतिविधि के नतीजे को RESULT_CANCELED पर सेट करें.

    इस तरह, अगर उपयोगकर्ता गतिविधि के आखिर में पहुंचने से पहले ही उसे बंद कर देता है, तो सिस्टम, ऐप्लिकेशन के विजेट होस्ट को सूचना देता है कि कॉन्फ़िगरेशन रद्द कर दिया गया है और होस्ट विजेट को नहीं जोड़ता है:

    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. उपयोगकर्ता की प्राथमिकताओं के हिसाब से विजेट को कॉन्फ़िगर करें.

  4. कॉन्फ़िगरेशन पूरा होने पर, getInstance(Context) पर कॉल करने पर AppWidgetManager:

    Kotlin

    val appWidgetManager = AppWidgetManager.getInstance(context)
    

    Java

    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
    
  5. विजेट को कॉल करने पर RemoteViews लेआउट 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. रिटर्न इंटेंट बनाएं, इसे गतिविधि के नतीजे के साथ सेट करें, और गतिविधि पूरी करें:

    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();
    

ज़्यादा जानकारी के लिए, ListWidgetConfigureActivity.kt सैंपल क्लास का इस्तेमाल करें.

विजेट को कॉन्फ़िगर करने के विकल्प

डिफ़ॉल्ट रूप से, ऐप्लिकेशन के विजेट का होस्ट कॉन्फ़िगरेशन गतिविधि को सिर्फ़ एक बार लॉन्च करता है, उपयोगकर्ता के होम स्क्रीन पर विजेट जोड़ने के तुरंत बाद. हालांकि, आपको विकल्पों को चुन सकता है जिससे आप उपयोगकर्ताओं को मौजूदा विजेट फिर से कॉन्फ़िगर करने दें या डिफ़ॉल्ट विजेट कॉन्फ़िगरेशन उपलब्ध कराकर, शुरुआती विजेट कॉन्फ़िगरेशन को छोड़ें.

डाले गए विजेट फिर से कॉन्फ़िगर करने की अनुमति दें

उपयोगकर्ता मौजूदा विजेट फिर से कॉन्फ़िगर कर सकें, इसके लिए reconfigurable फ़्लैग का निशान widgetFeatures appwidget-provider का एट्रिब्यूट. खास जानकारी के लिए ज़्यादा के लिए AppWidgetProviderInfo.xml फ़ाइल जानकारी. उदाहरण के लिए:

<appwidget-provider
    android:configure="com.myapp.ExampleAppWidgetConfigurationActivity"
    android:widgetFeatures="reconfigurable">
</appwidget-provider>

उपयोगकर्ता विजेट को दबाकर रखें और फिर से कॉन्फ़िगर करें बटन, जो पहली इमेज में 1.

बटन सबसे नीचे दाएं कोने में दिखता है
पहली इमेज. विजेट फिर से कॉन्फ़िगर करें बटन पर क्लिक करें.

विजेट के डिफ़ॉल्ट कॉन्फ़िगरेशन का इस्तेमाल करें

लोगों को विजेट का इस्तेमाल करने की अनुमति देकर, उन्हें बेहतर अनुभव दिया जा सकता है कॉन्फ़िगरेशन का शुरुआती चरण है. ऐसा करने के लिए, configuration_optional और widgetFeatures फ़ील्ड में reconfigurable फ़्लैग. यह बायपास करता है किसी उपयोगकर्ता के विजेट जोड़ने के बाद, कॉन्फ़िगरेशन गतिविधि लॉन्च करना. जैसा बताया गया है अगर उपयोगकर्ता अब भी विजेट को फिर से कॉन्फ़िगर कर सकता है, तो उससे बचा जा सकता है. उदाहरण के लिए, घड़ी विजेट शुरुआती कॉन्फ़िगरेशन को बायपास कर सकता है और डिफ़ॉल्ट रूप से डिवाइस का टाइम ज़ोन दिखाएं.

कॉन्फ़िगरेशन गतिविधि को दोनों के तौर पर मार्क करने का तरीका यहां दिया गया है इसे फिर से कॉन्फ़िगर किया जा सकता है और वैकल्पिक:

<appwidget-provider
    android:configure="com.myapp.ExampleAppWidgetConfigurationActivity"
    android:widgetFeatures="reconfigurable|configuration_optional">
</appwidget-provider>