অ্যাপ উইজেটগুলি কনফিগার করা যেতে পারে। উদাহরণস্বরূপ, একটি ঘড়ি উইজেট ব্যবহারকারীদের কোন সময় অঞ্চল প্রদর্শন করতে হবে তা কনফিগার করতে দেয়।
যদি আপনি ব্যবহারকারীদের আপনার উইজেটের সেটিংস কনফিগার করতে দিতে চান, তাহলে একটি উইজেট কনফিগারেশন Activity তৈরি করুন। এই কার্যকলাপটি অ্যাপ উইজেট হোস্ট দ্বারা স্বয়ংক্রিয়ভাবে চালু হয় যখন উইজেট তৈরি করা হয় অথবা পরে, আপনার নির্দিষ্ট কনফিগারেশন বিকল্পগুলির উপর নির্ভর করে।
কনফিগারেশন কার্যকলাপ ঘোষণা করুন
অ্যান্ড্রয়েড ম্যানিফেস্ট ফাইলে কনফিগারেশন অ্যাক্টিভিটিকে একটি সাধারণ অ্যাক্টিভিটি হিসেবে ঘোষণা করুন। অ্যাপ উইজেট হোস্ট এটিকে ACTION_APPWIDGET_CONFIGURE অ্যাকশন দিয়ে চালু করে, তাই অ্যাক্টিভিটিকে এই ইন্টেন্টটি গ্রহণ করতে হবে। উদাহরণস্বরূপ:
<activity android:name=".ExampleAppWidgetConfigurationActivity">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
</intent-filter>
</activity>
android:configure অ্যাট্রিবিউট ব্যবহার করে AppWidgetProviderInfo.xml ফাইলের কার্যকলাপ ঘোষণা করুন। এই ফাইলটি ঘোষণা করার বিষয়ে আরও তথ্য দেখুন। কনফিগারেশন কার্যকলাপ কীভাবে ঘোষণা করবেন তার একটি উদাহরণ এখানে দেওয়া হল:
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
...
android:configure="com.example.android.ExampleAppWidgetConfigurationActivity"
... >
</appwidget-provider>
কার্যকলাপটি সম্পূর্ণরূপে যোগ্য নেমস্পেস দিয়ে ঘোষণা করা হয়, কারণ লঞ্চারটি আপনার প্যাকেজ স্কোপের বাইরে থেকে এটি উল্লেখ করে।
একটি কনফিগারেশন কার্যকলাপ শুরু করার জন্য আপনার এটুকুই প্রয়োজন। এরপর, আপনাকে প্রকৃত কার্যকলাপটি বাস্তবায়ন করতে হবে।
কনফিগারেশন কার্যকলাপ বাস্তবায়ন করুন
কার্যকলাপটি বাস্তবায়নের সময় দুটি গুরুত্বপূর্ণ বিষয় মনে রাখতে হবে:
- অ্যাপ উইজেট হোস্ট কনফিগারেশন অ্যাক্টিভিটি কল করে এবং কনফিগারেশন অ্যাক্টিভিটি সর্বদা একটি ফলাফল প্রদান করে। ফলাফলে অ্যাক্টিভিটি চালু করা ইনটেন্ট দ্বারা পাস করা অ্যাপ উইজেট আইডি অন্তর্ভুক্ত থাকতে হবে—যা
EXTRA_APPWIDGET_IDহিসাবে ইনটেন্ট এক্সট্রাতে সংরক্ষিত থাকবে। - যখন কোনও কনফিগারেশন অ্যাক্টিভিটি চালু করা হয় তখন সিস্টেমটি
ACTION_APPWIDGET_UPDATEব্রডকাস্ট পাঠায় না, যার অর্থ উইজেট তৈরি করার সময় এটিonUpdate()পদ্ধতিতে কল করে না। প্রথমবার উইজেট তৈরি করার সময়AppWidgetManagerথেকে আপডেটের অনুরোধ করা কনফিগারেশন অ্যাক্টিভিটির দায়িত্ব। তবে, পরবর্তী আপডেটের জন্যonUpdate()ডাকা হয় - এটি কেবল প্রথমবার এড়িয়ে যায়।
কনফিগারেশন থেকে ফলাফল কীভাবে ফেরত দেওয়া যায় এবং উইজেট আপডেট করা যায়, তার উদাহরণের জন্য নিম্নলিখিত বিভাগে কোড স্নিপেটগুলি দেখুন।
কনফিগারেশন কার্যকলাপ থেকে উইজেট আপডেট করুন
যখন একটি উইজেট একটি কনফিগারেশন অ্যাক্টিভিটি ব্যবহার করে, তখন কনফিগারেশন সম্পূর্ণ হওয়ার পরে উইজেটটি আপডেট করার দায়িত্ব অ্যাক্টিভিটির। আপনি সরাসরি AppWidgetManager থেকে আপডেটের অনুরোধ করে এটি করতে পারেন।
উইজেটটি সঠিকভাবে আপডেট করার এবং কনফিগারেশন কার্যকলাপ বন্ধ করার পদ্ধতির একটি সারসংক্ষেপ এখানে দেওয়া হল:
যে উদ্দেশ্য থেকে অ্যাক্টিভিটি চালু করা হয়েছে সেখান থেকে অ্যাপ উইজেট আইডি পান:
কোটলিন
val appWidgetId = intent?.extras?.getInt( AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID ) ?: AppWidgetManager.INVALID_APPWIDGET_ID
জাভা
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এ সেট করুন।এইভাবে, যদি ব্যবহারকারী কার্যকলাপ শেষ হওয়ার আগেই তা থেকে সরে আসে, তাহলে সিস্টেমটি অ্যাপ উইজেট হোস্টকে অবহিত করে যে কনফিগারেশন বাতিল করা হয়েছে এবং হোস্ট উইজেটটি যোগ করে না:
কোটলিন
val resultValue = Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId) setResult(Activity.RESULT_CANCELED, resultValue)
জাভা
int resultValue = new Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); setResult(Activity.RESULT_CANCELED, resultValue);
ব্যবহারকারীর পছন্দ অনুসারে উইজেটটি কনফিগার করুন।
কনফিগারেশন সম্পূর্ণ হলে,
getInstance(Context)কল করেAppWidgetManagerএর একটি উদাহরণ পান:কোটলিন
val appWidgetManager = AppWidgetManager.getInstance(context)
জাভা
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
updateAppWidget(int,RemoteViews)কল করেRemoteViewsলেআউট দিয়ে উইজেটটি আপডেট করুন:কোটলিন
val views = RemoteViews(context.packageName, R.layout.example_appwidget) appWidgetManager.updateAppWidget(appWidgetId, views)
জাভা
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.example_appwidget); appWidgetManager.updateAppWidget(appWidgetId, views);
রিটার্ন ইন্টেন্ট তৈরি করুন, অ্যাক্টিভিটি ফলাফলের সাথে সেট করুন এবং অ্যাক্টিভিটিটি শেষ করুন:
কোটলিন
val resultValue = Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId) setResult(Activity.RESULT_OK, resultValue) finish()
জাভা
Intent resultValue = new Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); setResult(RESULT_OK, resultValue); finish();
উদাহরণের জন্য GitHub-এ ListWidgetConfigureActivity.kt নমুনা ক্লাসটি দেখুন।
উইজেট কনফিগারেশন বিকল্পগুলি
ডিফল্টরূপে, অ্যাপ উইজেট হোস্ট ব্যবহারকারী তাদের হোম স্ক্রিনে উইজেট যোগ করার পরপরই কেবল একবার কনফিগারেশন কার্যকলাপ চালু করে। তবে, আপনি এমন বিকল্পগুলি নির্দিষ্ট করতে পারেন যা আপনাকে ব্যবহারকারীদের বিদ্যমান উইজেটগুলি পুনরায় কনফিগার করতে সক্ষম করে অথবা একটি ডিফল্ট উইজেট কনফিগারেশন প্রদান করে প্রাথমিক উইজেট কনফিগারেশন এড়িয়ে যেতে দেয়।
ব্যবহারকারীদের স্থাপন করা উইজেটগুলি পুনরায় কনফিগার করতে সক্ষম করুন
ব্যবহারকারীদের বিদ্যমান উইজেটগুলি পুনরায় কনফিগার করতে দেওয়ার জন্য, appwidget-provider এর widgetFeatures অ্যাট্রিবিউটে reconfigurable পতাকাটি নির্দিষ্ট করুন। আরও তথ্যের জন্য AppWidgetProviderInfo.xml ফাইলটি ঘোষণা করার নির্দেশিকাটি দেখুন। উদাহরণস্বরূপ:
<appwidget-provider
android:configure="com.myapp.ExampleAppWidgetConfigurationActivity"
android:widgetFeatures="reconfigurable">
</appwidget-provider>
ব্যবহারকারীরা উইজেটটি স্পর্শ করে ধরে রেখে এবং চিত্র ১-এ ১ লেবেলযুক্ত Reconfigure বোতামটি ট্যাপ করে তাদের উইজেটটি পুনরায় কনফিগার করতে পারেন।

উইজেটের ডিফল্ট কনফিগারেশন ব্যবহার করুন
ব্যবহারকারীদের প্রাথমিক কনফিগারেশন ধাপটি এড়িয়ে যাওয়ার সুযোগ দিয়ে আপনি আরও নিরবচ্ছিন্ন উইজেট অভিজ্ঞতা প্রদান করতে পারেন। এটি করার জন্য, widgetFeatures ক্ষেত্রে configuration_optional এবং reconfigurable উভয় ফ্ল্যাগই নির্দিষ্ট করুন। এটি ব্যবহারকারী উইজেট যোগ করার পরে কনফিগারেশন কার্যকলাপ চালু করাকে বাইপাস করে। যেমনটি আগে উল্লেখ করা হয়েছে, ব্যবহারকারী পরেও উইজেটটি পুনরায় কনফিগার করতে পারেন। উদাহরণস্বরূপ, একটি ঘড়ি উইজেট প্রাথমিক কনফিগারেশনটি বাইপাস করতে পারে এবং ডিফল্টরূপে ডিভাইসের সময় অঞ্চল দেখাতে পারে।
আপনার কনফিগারেশন কার্যকলাপকে পুনর্গঠনযোগ্য এবং ঐচ্ছিক উভয় হিসাবে কীভাবে চিহ্নিত করবেন তার একটি উদাহরণ এখানে দেওয়া হল:
<appwidget-provider
android:configure="com.myapp.ExampleAppWidgetConfigurationActivity"
android:widgetFeatures="reconfigurable|configuration_optional">
</appwidget-provider>