ऐप्लिकेशन विजेट को कॉन्फ़िगर किया जा सकता है. उदाहरण के लिए, घड़ी के विजेट से उपयोगकर्ता कॉन्फ़िगर करें कि किस टाइम ज़ोन को दिखाना है.
अगर आपको उपयोगकर्ताओं को अपने विजेट की सेटिंग कॉन्फ़िगर करने की सुविधा देनी है, तो विजेट बनाएं
कॉन्फ़िगरेशन 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
.
विजेट को ठीक से अपडेट करने और विजेट को बंद करने की प्रक्रिया का सारांश यहां दिया गया है कॉन्फ़िगरेशन गतिविधि:
गतिविधि को लॉन्च करने वाले इंटेंट से, ऐप्लिकेशन विजेट आईडी पाएं:
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); }
गतिविधि के नतीजे को
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);
उपयोगकर्ता की प्राथमिकताओं के हिसाब से विजेट को कॉन्फ़िगर करें.
कॉन्फ़िगरेशन पूरा होने पर,
getInstance(Context)
पर कॉल करने परAppWidgetManager
:Kotlin
val appWidgetManager = AppWidgetManager.getInstance(context)
Java
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
विजेट को कॉल करने पर
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);
रिटर्न इंटेंट बनाएं, इसे गतिविधि के नतीजे के साथ सेट करें, और गतिविधि पूरी करें:
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>