অ্যাপ উইজেট কনফিগার করতে ব্যবহারকারীদের সক্ষম করুন

অ্যাপ উইজেট কনফিগারযোগ্য হতে পারে। উদাহরণস্বরূপ, একটি ঘড়ি উইজেট ব্যবহারকারীদের কোন সময় অঞ্চলটি প্রদর্শন করতে হবে তা কনফিগার করতে দেয়।

আপনি যদি ব্যবহারকারীদের আপনার উইজেটের সেটিংস কনফিগার করতে দিতে চান, তাহলে একটি উইজেট কনফিগারেশন 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 থেকে সরাসরি একটি আপডেটের অনুরোধ করে তা করতে পারেন।

এখানে উইজেটটি সঠিকভাবে আপডেট করার এবং কনফিগারেশন কার্যকলাপ বন্ধ করার পদ্ধতির একটি সারাংশ রয়েছে:

  1. যে অভিপ্রায়টি ক্রিয়াকলাপটি চালু করেছে তার থেকে অ্যাপ উইজেট আইডি পান:

    কোটলিন

    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);
    }
  2. কার্যকলাপের ফলাফল 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);
  3. ব্যবহারকারীর পছন্দ অনুযায়ী উইজেট কনফিগার করুন।

  4. কনফিগারেশন সম্পূর্ণ হলে, getInstance(Context) কল করে AppWidgetManager এর একটি উদাহরণ পান:

    কোটলিন

    val appWidgetManager = AppWidgetManager.getInstance(context)

    জাভা

    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
  5. 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);
  6. ফেরতের অভিপ্রায় তৈরি করুন, কার্যকলাপের ফলাফলের সাথে এটি সেট করুন এবং কার্যকলাপটি শেষ করুন:

    কোটলিন

    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>

ব্যবহারকারীরা উইজেটটিকে স্পর্শ করে ধরে রেখে এবং পুনরায় কনফিগার বোতামে আলতো চাপ দিয়ে তাদের উইজেটটি পুনরায় কনফিগার করতে পারেন, যা চিত্র 1-এ 1 লেবেলযুক্ত।

নীচে-ডান কোণায় বোতাম প্রদর্শিত হবে
চিত্র 1. উইজেট পুনরায় কনফিগার বোতাম।

উইজেটের ডিফল্ট কনফিগারেশন ব্যবহার করুন

ব্যবহারকারীদের প্রাথমিক কনফিগারেশন ধাপটি এড়িয়ে যেতে দিয়ে আপনি আরও বিরামহীন উইজেট অভিজ্ঞতা প্রদান করতে পারেন। এটি করার জন্য, widgetFeatures ক্ষেত্রের configuration_optional এবং reconfigurable উভয় পতাকা উল্লেখ করুন। এটি একটি ব্যবহারকারী উইজেট যোগ করার পরে কনফিগারেশন কার্যকলাপ চালু করা বাইপাস করে। পূর্বে উল্লিখিত হিসাবে, ব্যবহারকারী তারপরেও উইজেটটি পুনরায় কনফিগার করতে পারেন। উদাহরণস্বরূপ, একটি ঘড়ি উইজেট প্রাথমিক কনফিগারেশন বাইপাস করতে পারে এবং ডিফল্টরূপে ডিভাইসের সময় অঞ্চল দেখাতে পারে।

কীভাবে আপনার কনফিগারেশন কার্যকলাপকে পুনরায় কনফিগারযোগ্য এবং ঐচ্ছিক হিসাবে চিহ্নিত করবেন তার একটি উদাহরণ এখানে দেওয়া হল:

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