আপনার উইজেট এমনভাবে ডিজাইন করুন যাতে ব্যবহারকারীরা নির্দিষ্ট বৈশিষ্ট্য কনফিগার করতে পারেন। যেমন, একটি ঘড়ির উইজেট ব্যবহারকারীদের কোন টাইম জোন ডিসপ্লে করতে হবে তা কনফিগার করতে দিতে পারে।
আপনি যদি ব্যবহারকারীদের আপনার উইজেটের সেটিংস কনফিগার করতে দিতে চান, তাহলে একটি উইজেট
কনফিগারেশন Activity তৈরি করুন। আপনার উল্লেখ করা কনফিগারেশন বিকল্পের উপর নির্ভর করে,
উইজেট তৈরি করার সময় বা পরে, অ্যাপ উইজেট হোস্টের মাধ্যমে
এই অ্যাক্টিভিটি অটোমেটিক চালু করা হয়।
কনফিগারেশন অ্যাক্টিভিটি ঘোষণা করা
Android ম্যানিফেস্ট ফাইলে কনফিগারেশন অ্যাক্টিভিটিকে সাধারণ অ্যাক্টিভিটি হিসেবে ঘোষণা করুন। অ্যাপ উইজেট হোস্ট এটিকে 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ব্রডকাস্ট পাঠায় না, যার অর্থ হল উইজেট তৈরি করার সময় এটি প্রাথমিকভাবে আপনার উইজেট আপডেট কল করে না। প্রথমবার উইজেট তৈরি করার সময়GlanceAppWidgetথেকে আপডেট করার অনুরোধ করার দায়িত্ব কনফিগারেশন অ্যাক্টিভিটির। তবে, পরবর্তী চক্রের জন্য আপডেট অটোমেটিক ট্রিগার করা হয়।
- কনফিগারেশন অ্যাক্টিভিটি চালু করা হলে সিস্টেম
কনফিগারেশন থেকে কীভাবে ফলাফল পাওয়া যায় এবং Glance উইজেট আপডেট করা যায় তার উদাহরণ হিসেবে নিম্নলিখিত বিভাগে কোড স্নিপেট দেখুন।
কনফিগারেশন অ্যাক্টিভিটি থেকে উইজেট আপডেট করুন
কোনও উইজেট কনফিগারেশন অ্যাক্টিভিটি ব্যবহার করলে, কনফিগারেশন সম্পূর্ণ হওয়ার পরে উইজেট আপডেট করার দায়িত্ব
অ্যাক্টিভিটির উপর বর্তায়। আপনি GlanceAppWidget ইনস্ট্যান্স থেকে সরাসরি ম্যানুয়াল আপডেট ট্রিগার করে
এটি করতে পারেন।
উইজেট সঠিকভাবে আপডেট করা এবং কনফিগারেশন অ্যাক্টিভিটি বন্ধ করার পদ্ধতির সারসংক্ষেপ এখানে দেওয়া হল:
অ্যাক্টিভিটি লঞ্চ করা ইনটেন্ট থেকে অ্যাপ উইজেট আইডি পান:
val appWidgetId = intent?.extras?.getInt( AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID ) ?: AppWidgetManager.INVALID_APPWIDGET_IDঅ্যাক্টিভিটির ফলাফল
RESULT_CANCELED-এ সেট করুন।এইভাবে, ব্যবহারকারী শেষ পর্যন্ত পৌঁছানোর আগে অ্যাক্টিভিটি থেকে বেরিয়ে এলে, সিস্টেম অ্যাপ উইজেট হোস্টকে জানায় যে কনফিগারেশন বাতিল করা হয়েছে এবং হোস্ট উইজেট যোগ করে না:
val resultValue = Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId) setResult(Activity.RESULT_CANCELED, resultValue)ব্যবহারকারীর পছন্দ অনুযায়ী উইজেট কনফিগার করুন, যেমন পারসিস্টেন্ট DataStore বা লোকাল ডেটাবেসে বেছে নেওয়া বিকল্প লেখা।
কনফিগারেশন সম্পূর্ণ হলে, প্ল্যাটফর্ম উইজেট আইডির সাথে সম্পর্কিত
GlanceIdউদ্ধার করুন:val glanceAppWidgetManager = GlanceAppWidgetManager(context) val glanceId = glanceAppWidgetManager.getGlanceIdBy(appWidgetId)আপনার
GlanceAppWidgetইনস্ট্যান্সেupdateসাসপেন্ড ফাংশন কল করে উইজেট কন্টেন্ট আপডেট করুন:// Update the GlanceAppWidget directly ExampleGlanceWidget().update(context, glanceId)রিটার্ন ইনটেন্ট তৈরি করুন, অ্যাক্টিভিটি ফলাফলের সাথে এটি সেট করুন এবং অ্যাক্টিভিটি শেষ করুন:
val resultValue = Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId) setResult(Activity.RESULT_OK, resultValue) finish()
উইজেট কনফিগারেশন বিকল্প
ডিফল্ট হিসেবে, অ্যাপ উইজেট হোস্ট শুধুমাত্র একবার কনফিগারেশন অ্যাক্টিভিটি লঞ্চ করে, ব্যবহারকারী তার হোম স্ক্রিনে উইজেট যোগ করার ঠিক পরেই। তবে, আপনি এমন বিকল্প নির্দিষ্ট করতে পারেন যা ব্যবহারকারীকে আগে থেকে থাকা উইজেট আবার কনফিগার করতে দেয় অথবা ডিফল্ট উইজেট কনফিগারেশন প্রদান করে প্রাথমিক উইজেট কনফিগারেশন এড়িয়ে যেতে দেয়।
ব্যবহারকারীদের প্লেস উইজেট আবার কনফিগার করার সুবিধা দিন
ব্যবহারকারীদের আগে থেকে থাকা উইজেট আবার কনফিগার করার অনুমতি দিতে, appwidget-provider-এর widgetFeatures অ্যাট্রিবিউটে reconfigurable
ফ্ল্যাগ নির্দিষ্ট করুন। যেমন:
<appwidget-provider
android:configure="com.myapp.ExampleAppWidgetConfigurationActivity"
android:widgetFeatures="reconfigurable">
</appwidget-provider>
ব্যবহারকারীরা উইজেট স্পর্শ করে ধরে রেখে এবং আবার কনফিগার করুন বোতামে ট্যাপ করে তাদের উইজেট আবার কনফিগার করতে পারেন, যা চিত্র ১-এ ১ হিসেবে লেবেল করা আছে।
উইজেটের ডিফল্ট কনফিগারেশন ব্যবহার করুন
ব্যবহারকারীদের প্রাথমিক কনফিগারেশন ধাপ এড়িয়ে যেতে দিয়ে আপনি আরও নির্বিঘ্ন উইজেট অভিজ্ঞতা প্রদান করতে পারেন। এটি করতে, widgetFeatures ফিল্ডে
configuration_optional এবং reconfigurable ফ্ল্যাগ দুটিই
উল্লেখ করুন। ব্যবহারকারী উইজেট যোগ করার পরে এটি কনফিগারেশন অ্যাক্টিভিটি
লঞ্চ করা বাইপাস করে। আগে যেমন উল্লেখ করা হয়েছে, ব্যবহারকারী এখনও
উইজেট আবার কনফিগার করতে পারবেন। যেমন, একটি ঘড়ি উইজেট প্রাথমিক কনফিগারেশন বাইপাস করতে পারে
এবং ডিফল্ট হিসেবে ডিভাইসের টাইম জোন দেখাতে পারে।
আপনার কনফিগারেশন অ্যাক্টিভিটি কীভাবে আবার কনফিগার করা যাবে এবং ঐচ্ছিক হিসেবে চিহ্নিত করবেন তার উদাহরণ এখানে দেওয়া হল:
<appwidget-provider
android:configure="com.myapp.ExampleAppWidgetConfigurationActivity"
android:widgetFeatures="reconfigurable|configuration_optional">
</appwidget-provider>