স্ট্যান্ডার্ড ভিউ ব্যবহার করে এমন অ্যাপগুলি বিশেষ কনফিগারেশন ছাড়াই অটোফিল ফ্রেমওয়ার্কের সাথে কাজ করে। আপনি ফ্রেমওয়ার্কের সাথে আপনার অ্যাপ কীভাবে কাজ করে তাও অপ্টিমাইজ করতে পারেন।
অটোফিল পরিবেশ সেট আপ করুন
এই বিভাগটি আপনার অ্যাপের জন্য মৌলিক অটোফিল কার্যকারিতা কীভাবে সেট আপ করবেন তা বর্ণনা করে।
একটি অটোফিল পরিষেবা কনফিগার করুন
আপনার অ্যাপটি অটোফিল ফ্রেমওয়ার্ক ব্যবহার করার জন্য আপনার ডিভাইসে একটি অটোফিল পরিষেবা কনফিগার করা আবশ্যক। যদিও Android 8.0 (API লেভেল 26) এবং তার উপরে চলমান বেশিরভাগ ফোন এবং ট্যাবলেটে অটোফিল পরিষেবা থাকে, তবুও আমরা আপনাকে আপনার অ্যাপটি পরীক্ষা করার সময় একটি পরীক্ষামূলক পরিষেবা ব্যবহার করার পরামর্শ দিচ্ছি, যেমন Android অটোফিল ফ্রেমওয়ার্ক নমুনায় অটোফিল পরিষেবা। একটি এমুলেটর ব্যবহার করার সময়, স্পষ্টভাবে একটি অটোফিল পরিষেবা সেট করুন, কারণ এমুলেটরটি ডিফল্ট পরিষেবা সহ নাও আসতে পারে।
নমুনা অ্যাপ থেকে পরীক্ষামূলক অটোফিল পরিষেবা ইনস্টল করার পরে, সেটিংস > সিস্টেম > ভাষা এবং ইনপুট > উন্নত > ইনপুট সহায়তা > অটোফিল পরিষেবা -এ নেভিগেট করে অটোফিল পরিষেবা সক্ষম করুন।
অটোফিল পরীক্ষা করার জন্য একটি এমুলেটর কনফিগার করার বিষয়ে আরও তথ্যের জন্য, অটোফিল দিয়ে আপনার অ্যাপ পরীক্ষা করুন দেখুন।
ভিউয়ের জন্য অ্যাক্টিভিটি কনটেক্সট ব্যবহার করুন
 অটোফিল পরিষেবাটির সঠিকভাবে কাজ করার জন্য অ্যাক্টিভিটি কনটেক্সট প্রয়োজন। কোনও ভিউ ইনস্ট্যান্টিয়েট করার সময়, Activity কনটেক্সট হিসাবে ব্যবহার করুন যাতে এটি সঠিকভাবে অটোফিল করা যায়।
অটোফিলের জন্য ইঙ্গিত দিন
অটোফিল পরিষেবা হিউরিস্টিক ব্যবহার করে প্রতিটি ভিউয়ের ধরণ নির্ধারণ করে। তবে, যদি আপনার অ্যাপ এই হিউরিস্টিকের উপর নির্ভর করে, তাহলে আপনার অ্যাপ আপডেট করার সময় অটোফিল আচরণ অপ্রত্যাশিতভাবে পরিবর্তিত হতে পারে। অটোফিল পরিষেবাটি আপনার অ্যাপের ফর্ম ফ্যাক্টরগুলিকে সঠিকভাবে সনাক্ত করে তা নিশ্চিত করতে, অটোফিল ইঙ্গিত প্রদান করুন।
 আপনি android:autofillHints অ্যাট্রিবিউট ব্যবহার করে অটোফিল ইঙ্গিত সেট করতে পারেন। নিম্নলিখিত উদাহরণটি EditText এ একটি "password" ইঙ্গিত সেট করে:
<EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:autofillHints="password" />
 আপনি setAutofillHints() পদ্ধতি ব্যবহার করে প্রোগ্রাম্যাটিকভাবে ইঙ্গিত সেট করতে পারেন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে: 
কোটলিন
val password = findViewById<EditText>(R.id.password) password.setAutofillHints(View.AUTOFILL_HINT_PASSWORD)
জাভা
EditText password = findViewById(R.id.password); password.setAutofillHints(View.AUTOFILL_HINT_PASSWORD);
পূর্বনির্ধারিত ইঙ্গিত ধ্রুবক অন্তর্ভুক্ত করুন
 অটোফিল ফ্রেমওয়ার্ক ইঙ্গিতগুলিকে বৈধতা দেয় না; এগুলি কোনও পরিবর্তন বা বৈধতা ছাড়াই অটোফিল পরিষেবাতে প্রেরণ করা হয়। আপনি যেকোনো মান ব্যবহার করতে পারেন, View এবং AndroidX HintConstants ক্লাসগুলিতে আনুষ্ঠানিকভাবে সমর্থিত ইঙ্গিত ধ্রুবকগুলির তালিকা রয়েছে।
এই ধ্রুবকগুলির সংমিশ্রণ ব্যবহার করে, আপনি সাধারণ অটোফিল পরিস্থিতির জন্য লেআউট তৈরি করতে পারেন:
অ্যাকাউন্টের শংসাপত্র
 লগইন ফর্মে, আপনি অ্যাকাউন্ট শংসাপত্রের ইঙ্গিতগুলি অন্তর্ভুক্ত করতে পারেন যেমন AUTOFILL_HINT_USERNAME এবং AUTOFILL_HINT_PASSWORD ।
 নতুন অ্যাকাউন্ট তৈরি করার জন্য, অথবা ব্যবহারকারীরা যখন তাদের ব্যবহারকারীর নাম এবং পাসওয়ার্ড পরিবর্তন করেন, তখন আপনি AUTOFILL_HINT_NEW_USERNAME এবং AUTOFILL_HINT_NEW_PASSWORD ব্যবহার করতে পারেন।
ক্রেডিট কার্ডের তথ্য
 ক্রেডিট কার্ডের তথ্যের জন্য অনুরোধ করার সময়, আপনি AUTOFILL_HINT_CREDIT_CARD_NUMBER এবং AUTOFILL_HINT_CREDIT_CARD_SECURITY_CODE এর মতো ইঙ্গিত ব্যবহার করতে পারেন।
ক্রেডিট কার্ডের মেয়াদ শেষ হওয়ার তারিখের জন্য, নিম্নলিখিতগুলির মধ্যে একটি করুন:
-  যদি আপনি মেয়াদ শেষ হওয়ার তারিখের জন্য একটি একক ভিউ ব্যবহার করেন, তাহলে 
AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATEব্যবহার করুন। -  যদি মেয়াদ শেষ হওয়ার তারিখের প্রতিটি অংশের জন্য আলাদা ভিউ ব্যবহার করা হয়, তাহলে আপনি প্রতিটি ভিউয়ের জন্য 
AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DAY,AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_MONTH, এবংAUTOFILL_HINT_CREDIT_CARD_EXPIRATION_YEARব্যবহার করতে পারেন। 
প্রকৃত ঠিকানা
ফিজিক্যাল অ্যাড্রেস ফর্ম ফিল্ডের জন্য, আপনি নিম্নলিখিত ইঙ্গিতগুলি ব্যবহার করতে পারেন:
-  একটি একক ভিউতে ঠিকানার জন্য, 
AUTOFILL_HINT_POSTAL_ADDRESSব্যবহার করুন। - ঠিকানার বিভিন্ন অংশের জন্য পৃথক ভিউ ব্যবহার করার সময়, আপনি নিম্নলিখিতগুলি ব্যবহার করতে পারেন:
 
মানুষের নাম
মানুষের নাম জিজ্ঞাসা করার সময়, আপনি নিম্নলিখিত ইঙ্গিতগুলি ব্যবহার করতে পারেন:
-  একক ভিউতে একজন ব্যক্তির পুরো নাম অটোফিল করতে, 
AUTOFILL_HINT_PERSON_NAMEব্যবহার করুন। - যদি কোনও নামের বিভিন্ন অংশের জন্য আলাদা ভিউ ব্যবহার করা হয়, তাহলে আপনি নিম্নলিখিত যেকোনো একটি ব্যবহার করতে পারেন:
 
ফোন নম্বর
ফোন নম্বরের জন্য, আপনি নিম্নলিখিতগুলি ব্যবহার করতে পারেন:
-  একক ভিউতে সম্পূর্ণ ফোন নম্বরের অনুরোধ করার সময়, 
AUTOFILL_HINT_PHONE_NUMBERব্যবহার করুন। - যদি কোনও ফোন নম্বরের বিভিন্ন অংশের জন্য আলাদা ভিউ ব্যবহার করা হয়, তাহলে আপনি নিম্নলিখিত যেকোনো একটি ব্যবহার করতে পারেন:
 
এককালীন পাসওয়ার্ড (OTP)
 একক ভিউতে এককালীন পাসওয়ার্ডের জন্য, আপনি AUTOFILL_HINT_SMS_OTP ব্যবহার করতে পারেন।
 একাধিক ভিউয়ের ক্ষেত্রে যেখানে প্রতিটি ভিউ OTP-এর একটি একক সংখ্যার সাথে ম্যাপ করে, আপনি প্রতি-অক্ষরের ইঙ্গিত তৈরি করতে generateSmsOtpHintForCharacterPosition() পদ্ধতি ব্যবহার করতে পারেন।
ওয়েবসাইট এবং মোবাইল অ্যাপ ডেটা সংযুক্ত করুন
অ্যাপ এবং ওয়েবসাইট সংযুক্ত হওয়ার পরে, অটোফিল উইথ গুগলের মতো অটোফিল পরিষেবাগুলি ব্রাউজার এবং অ্যান্ড্রয়েড ডিভাইসের মধ্যে ব্যবহারকারীর লগইন ডেটা ভাগ করে নিতে পারে। যখন কোনও ব্যবহারকারী উভয় প্ল্যাটফর্মে একই অটোফিল পরিষেবা বেছে নেন, তখন আপনার ওয়েব অ্যাপে সাইন ইন করলে, তারা যখন আপনার সংশ্লিষ্ট অ্যান্ড্রয়েড অ্যাপে সাইন ইন করবেন তখন তাদের লগইন শংসাপত্রগুলি অটোফিলের জন্য উপলব্ধ হবে।
 আপনার ওয়েবসাইটের সাথে আপনার অ্যান্ড্রয়েড অ্যাপ সংযুক্ত করতে, আপনার সাইটে delegate_permission/common.get_login_creds রিলেশন সহ একটি ডিজিটাল অ্যাসেট লিঙ্ক হোস্ট করুন। তারপর, আপনার অ্যাপের AndroidManifest.xml ফাইলে এই অ্যাসোসিয়েশনটি ঘোষণা করুন। আপনার ওয়েবসাইটকে আপনার অ্যান্ড্রয়েড অ্যাপের সাথে কীভাবে সংযুক্ত করবেন সে সম্পর্কে বিস্তারিত নির্দেশাবলীর জন্য, অ্যাপ এবং ওয়েবসাইটগুলিতে স্বয়ংক্রিয় সাইন-ইন সক্ষম করুন দেখুন।
একটি অটোফিল ওয়ার্কফ্লো সম্পূর্ণ করুন
এই বিভাগটি নির্দিষ্ট পরিস্থিতি বর্ণনা করে যেখানে আপনি আপনার অ্যাপের ব্যবহারকারীদের জন্য অটোফিল কার্যকারিতা উন্নত করার জন্য পদক্ষেপ নিতে পারেন।
অটোফিল সক্ষম কিনা তা নির্ধারণ করুন
ব্যবহারকারীরা সেটিংস > সিস্টেম > ভাষা ও ইনপুট > উন্নত > ইনপুট সহায়তা > অটোফিল পরিষেবাতে নেভিগেট করে অটোফিল সক্ষম বা অক্ষম করতে পারবেন এবং অটোফিল পরিষেবা পরিবর্তন করতে পারবেন। আপনার অ্যাপ ব্যবহারকারীর অটোফিল সেটিংস ওভাররাইড করতে পারবে না, তবে আপনি আপনার অ্যাপে, অথবা আপনার অ্যাপের বিশেষ দৃশ্যে, যদি অটোফিল ব্যবহারকারীর জন্য উপলব্ধ থাকে তবে অতিরিক্ত অটোফিল কার্যকারিতা প্রয়োগ করতে পারবেন।
 উদাহরণস্বরূপ, ব্যবহারকারীর জন্য অটোফিল সক্ষম করা থাকলে TextView ওভারফ্লো মেনুতে একটি অটোফিল এন্ট্রি দেখায়। ব্যবহারকারীর জন্য অটোফিল সক্ষম করা হয়েছে কিনা তা পরীক্ষা করতে, AutofillManager অবজেক্টের isEnabled() পদ্ধতিতে কল করুন।
আপনার সাইন-আপ এবং লগইন অভিজ্ঞতা অটোফিল ছাড়াই ব্যবহারকারীদের জন্য অপ্টিমাইজ করা হয়েছে তা নিশ্চিত করতে, One Tap সাইন-ইন বাস্তবায়ন করুন।
একটি অটোফিল অনুরোধ জোর করে করুন
 কখনও কখনও ব্যবহারকারীর কোনও পদক্ষেপের প্রতিক্রিয়ায় আপনাকে একটি অটোফিল অনুরোধ জোর করে করতে হয়। উদাহরণস্বরূপ, ব্যবহারকারী যখন ভিউতে স্পর্শ করে ধরে রাখেন তখন TextView একটি অটোফিল মেনু আইটেম অফার করে। নিম্নলিখিত কোড উদাহরণটি দেখায় কিভাবে একটি অটোফিল অনুরোধ জোর করে করতে হয়: 
কোটলিন
fun eventHandler(view: View) { val afm = requireContext().getSystemService(AutofillManager::class.java) afm?.requestAutofill(view) }
জাভা
public void eventHandler(View view) { AutofillManager afm = context.getSystemService(AutofillManager.class); if (afm != null) { afm.requestAutofill(view); } }
 আপনি বর্তমান অটোফিল কনটেক্সট বাতিল করতে cancel() পদ্ধতিটিও ব্যবহার করতে পারেন। যদি আপনার কাছে এমন একটি বোতাম থাকে যা লগইন পৃষ্ঠার ক্ষেত্রগুলি সাফ করে তবে এটি কার্যকর হতে পারে।
পিকার নিয়ন্ত্রণে ডেটার জন্য সঠিক অটোফিল টাইপ ব্যবহার করুন
 পিকারগুলি অটোফিলের ক্ষেত্রে কার্যকর হতে পারে, কারণ এটি একটি UI প্রদান করে যা ব্যবহারকারীদের তারিখ বা সময় ডেটা সংরক্ষণ করে এমন একটি ক্ষেত্রের মান পরিবর্তন করতে দেয়। উদাহরণস্বরূপ, একটি ক্রেডিট কার্ড ফর্মে, একটি তারিখ পিকার ব্যবহারকারীদের তাদের ক্রেডিট কার্ডের মেয়াদ শেষ হওয়ার তারিখ লিখতে বা পরিবর্তন করতে দেয়। তবে, পিকারটি দৃশ্যমান না হলে ডেটা প্রদর্শনের জন্য আপনাকে অন্য একটি ভিউ ব্যবহার করতে হবে, যেমন EditText ।
 একটি EditText অবজেক্ট মূলত AUTOFILL_TYPE_TEXT ধরণের অটোফিল ডেটা আশা করে। যদি আপনি অন্য ধরণের ডেটা ব্যবহার করেন, তাহলে একটি কাস্টম ভিউ তৈরি করুন যা EditText থেকে উত্তরাধিকারসূত্রে পাওয়া যায় এবং সংশ্লিষ্ট ধরণের ডেটা পরিচালনা করার জন্য প্রয়োজনীয় পদ্ধতিগুলি প্রয়োগ করে। উদাহরণস্বরূপ, যদি আপনার একটি তারিখ ক্ষেত্র থাকে, তাহলে যুক্তি সহ পদ্ধতিগুলি প্রয়োগ করুন যা AUTOFILL_TYPE_DATE ধরণের মানগুলি সঠিকভাবে পরিচালনা করে।
যখন আপনি অটোফিল ডেটা টাইপ নির্দিষ্ট করেন, তখন অটোফিল পরিষেবা ভিউতে প্রদর্শিত ডেটার একটি উপযুক্ত উপস্থাপনা তৈরি করতে পারে। আরও তথ্যের জন্য, অটোফিল সহ পিকার ব্যবহার করুন দেখুন।
অটোফিল প্রসঙ্গটি সম্পূর্ণ করুন
 অটোফিল ফ্রেমওয়ার্কটি অটোফিল কনটেক্সট শেষ হওয়ার পরে "অটোফিলের জন্য সংরক্ষণ করুন?" ডায়ালগ দেখিয়ে ভবিষ্যতে ব্যবহারের জন্য ব্যবহারকারীর ইনপুট সংরক্ষণ করে। সাধারণত, কোনও অ্যাক্টিভিটি শেষ হলে অটোফিল কনটেক্সট শেষ হয়। তবে, কিছু পরিস্থিতিতে আপনাকে ফ্রেমওয়ার্কটি স্পষ্টভাবে অবহিত করতে হবে—উদাহরণস্বরূপ, যদি আপনি একই অ্যাক্টিভিটি ব্যবহার করেন কিন্তু আপনার লগইন এবং কন্টেন্ট স্ক্রিন উভয়ের জন্য আলাদা আলাদা টুকরো ব্যবহার করেন। এই পরিস্থিতিতে, আপনি AutofillManager.commit() কল করে স্পষ্টভাবে কনটেক্সটটি শেষ করতে পারেন।
কাস্টম ভিউয়ের জন্য সমর্থন
কাস্টম ভিউগুলি অটোফিল API ব্যবহার করে অটোফিল ফ্রেমওয়ার্কের সাথে এক্সপোজ হওয়া মেটাডেটা নির্দিষ্ট করতে পারে। কিছু ভিউ ভার্চুয়াল শিশুদের একটি ধারক হিসাবে কাজ করে, যেমন OpenGL-রেন্ডার করা UI ধারণকারী ভিউ। এই ভিউগুলিকে অটোফিল ফ্রেমওয়ার্কের সাথে কাজ করার আগে অ্যাপে ব্যবহৃত তথ্যের কাঠামো নির্দিষ্ট করতে API ব্যবহার করতে হবে।
যদি আপনার অ্যাপ কাস্টম ভিউ ব্যবহার করে, তাহলে নিম্নলিখিত পরিস্থিতিগুলি বিবেচনা করুন:
- কাস্টম ভিউ একটি স্ট্যান্ডার্ড ভিউ স্ট্রাকচার , অথবা একটি ডিফল্ট ভিউ স্ট্রাকচার প্রদান করে।
 - কাস্টম ভিউতে একটি ভার্চুয়াল স্ট্রাকচার আছে, অথবা এমন একটি ভিউ স্ট্রাকচার আছে যা অটোফিল ফ্রেমওয়ার্কে উপলব্ধ নয়।
 
স্ট্যান্ডার্ড ভিউ স্ট্রাকচার সহ কাস্টম ভিউ
কাস্টম ভিউগুলি অটোফিল কাজ করার জন্য প্রয়োজনীয় মেটাডেটা নির্ধারণ করতে পারে। নিশ্চিত করুন যে আপনার কাস্টম ভিউ অটোফিল ফ্রেমওয়ার্কের সাথে কাজ করার জন্য মেটাডেটা যথাযথভাবে পরিচালনা করে। আপনার কাস্টম ভিউকে নিম্নলিখিত পদক্ষেপগুলি নিতে হবে:
- ফ্রেমওয়ার্ক আপনার অ্যাপে যে অটোফিল মান পাঠায় তা পরিচালনা করুন।
 - ফ্রেমওয়ার্কে অটোফিল টাইপ এবং মান প্রদান করুন।
 
 যখন অটোফিল ট্রিগার করা হয়, তখন অটোফিল ফ্রেমওয়ার্ক আপনার ভিউতে autofill() কল করে এবং আপনার ভিউ ব্যবহার করতে হবে এমন মান পাঠায়। আপনার কাস্টম ভিউ কীভাবে অটোফিল মান পরিচালনা করে তা নির্দিষ্ট করতে autofill() প্রয়োগ করুন।
 আপনার ভিউতে যথাক্রমে getAutofillType() এবং getAutofillValue() পদ্ধতিগুলিকে ওভাররাইড করে একটি অটোফিল টাইপ এবং মান নির্দিষ্ট করতে হবে।
 পরিশেষে, যদি ব্যবহারকারী বর্তমান অবস্থায় ভিউটির জন্য কোনও মান প্রদান করতে না পারে তবে অটোফিল অবশ্যই ভিউটি পূরণ করবে না—উদাহরণস্বরূপ, যদি ভিউটি অক্ষম থাকে। এই ক্ষেত্রে, getAutofillType() AUTOFILL_TYPE_NONE , getAutofillValue() কে null , এবং autofill() কিছুই করতে হবে না।
কাঠামোর মধ্যে সঠিকভাবে কাজ করার জন্য নিম্নলিখিত ক্ষেত্রে অতিরিক্ত পদক্ষেপের প্রয়োজন:
- কাস্টম ভিউ সম্পাদনাযোগ্য।
 - কাস্টম ভিউতে সংবেদনশীল ডেটা রয়েছে।
 
কাস্টম ভিউ সম্পাদনাযোগ্য
 যদি ভিউটি সম্পাদনাযোগ্য হয়, তাহলে AutofillManager অবজেক্টে notifyValueChanged() কল করে পরিবর্তনগুলি সম্পর্কে অটোফিল ফ্রেমওয়ার্ককে অবহিত করুন।
কাস্টম ভিউতে সংবেদনশীল ডেটা রয়েছে
যদি কোনও ভিউতে ব্যক্তিগতভাবে শনাক্তযোগ্য তথ্য (PII) থাকে যেমন ইমেল ঠিকানা, ক্রেডিট কার্ড নম্বর এবং পাসওয়ার্ড, তাহলে এটিকে সংবেদনশীল হিসেবে চিহ্নিত করতে হবে।
সাধারণত, যেসব ভিউয়ের কন্টেন্ট স্ট্যাটিক রিসোর্স থেকে আসে, সেগুলোতে সংবেদনশীল ডেটা থাকে না, অন্যদিকে যেসব ভিউয়ের কন্টেন্ট ডাইনামিকভাবে সেট করা থাকে, সেগুলোতে সংবেদনশীল ডেটা থাকতে পারে। উদাহরণস্বরূপ, যে লেবেলে "আপনার ব্যবহারকারীর নাম লিখুন" থাকে, সেখানে সংবেদনশীল ডেটা থাকে না, যেখানে "হ্যালো, জন" থাকে।
অটোফিল ফ্রেমওয়ার্ক ধরে নেয় যে সমস্ত ডেটা ডিফল্টরূপে সংবেদনশীল। আপনি সংবেদনশীল নয় এমন ডেটা চিহ্নিত করতে পারেন।
 কোনও ভিউতে সংবেদনশীল ডেটা আছে কিনা তা চিহ্নিত করতে, onProvideAutofillStructure() প্রয়োগ করুন এবং ViewStructure অবজেক্টে setDataIsSensitive() কল করুন।
নিচের কোড উদাহরণটি দেখায় কিভাবে ভিউ স্ট্রাকচারের ডেটাকে সংবেদনশীল নয় হিসেবে চিহ্নিত করতে হয়:
কোটলিন
override fun onProvideAutofillStructure(structure: ViewStructure, flags: Int) { super.onProvideAutofillStructure(structure, flags) structure.setDataIsSensitive(false) }
জাভা
@Override public void onProvideAutofillStructure(ViewStructure structure, int flags) { super.onProvideAutofillStructure(structure, flags); structure.setDataIsSensitive(false); }
 যদি কোনও ভিউ শুধুমাত্র পূর্বনির্ধারিত মান গ্রহণ করে, তাহলে আপনি setAutofillOptions() পদ্ধতি ব্যবহার করে ভিউটি অটোফিল করার জন্য কোন বিকল্পগুলি ব্যবহার করা যেতে পারে তা সেট করতে পারেন। বিশেষ করে, যেসব ভিউয়ের অটোফিল টাইপ AUTOFILL_TYPE_LIST তাদের এই পদ্ধতিটি ব্যবহার করতে হবে, কারণ অটোফিল পরিষেবাটি যদি ভিউটি পূরণ করার জন্য উপলব্ধ বিকল্পগুলি জানে তবে এটি আরও ভাল কাজ করতে পারে।
 Spinner এর মতো অ্যাডাপ্টার ব্যবহার করে এমন ভিউগুলিও একই রকম। উদাহরণস্বরূপ, একটি স্পিনার যা ক্রেডিট কার্ডের মেয়াদ শেষ হওয়ার ক্ষেত্রগুলিতে ব্যবহারের জন্য বর্তমান বছরের উপর ভিত্তি করে গতিশীলভাবে তৈরি বছর সরবরাহ করে, তারা বছরের তালিকা প্রদানের জন্য Adapter ইন্টারফেসের getAutofillOptions() পদ্ধতি প্রয়োগ করতে পারে।
 ArrayAdapter ব্যবহার করে এমন ভিউগুলিও মানগুলির তালিকা প্রদান করতে পারে। ArrayAdapter স্বয়ংক্রিয়ভাবে স্ট্যাটিক রিসোর্সের জন্য অটোফিল বিকল্পগুলি সেট করে। যদি আপনি গতিশীলভাবে মানগুলি প্রদান করেন, তাহলে getAutofillOptions() ওভাররাইড করুন।
ভার্চুয়াল কাঠামো সহ কাস্টম ভিউ
অটোফিল ফ্রেমওয়ার্কের জন্য আপনার অ্যাপের UI-তে তথ্য সম্পাদনা এবং সংরক্ষণ করার আগে একটি ভিউ স্ট্রাকচার প্রয়োজন। নিম্নলিখিত পরিস্থিতিতে ফ্রেমওয়ার্কে ভিউ স্ট্রাকচার উপলব্ধ থাকে না:
- অ্যাপটি UI রেন্ডার করার জন্য OpenGL এর মতো একটি নিম্ন-স্তরের রেন্ডারিং ইঞ্জিন ব্যবহার করে।
 -  অ্যাপটি UI আঁকতে 
Canvasএকটি উদাহরণ ব্যবহার করে। 
 এই ক্ষেত্রে, আপনি onProvideAutofillVirtualStructure() প্রয়োগ করে এবং এই পদক্ষেপগুলি অনুসরণ করে একটি ভিউ স্ট্রাকচার নির্দিষ্ট করতে পারেন:
-  
addChildCount()কল করে ভিউ স্ট্রাকচারের চাইল্ড কাউন্ট বাড়ান। -  
newChild()কল করে একটি শিশু যোগ করুন। -  
setAutofillId()কল করে সন্তানের জন্য অটোফিল আইডি সেট করুন। - প্রাসঙ্গিক বৈশিষ্ট্য সেট করুন, যেমন অটোফিল মান এবং প্রকার।
 -  যদি ভার্চুয়াল চাইল্ডের ডেটা সংবেদনশীল হয়, তাহলে 
truesetDataIsSensitive()তে পাস করুন; অন্যথায়,falseপাস করুন। 
নিম্নলিখিত কোড স্নিপেটটি ভার্চুয়াল কাঠামোতে একটি নতুন শিশু তৈরি করার পদ্ধতি দেখায়:
কোটলিন
override fun onProvideAutofillVirtualStructure(structure: ViewStructure, flags: Int) { super.onProvideAutofillVirtualStructure(structure, flags) // Create a new child in the virtual structure. structure.addChildCount(1) val child = structure.newChild(childIndex) // Set the autofill ID for the child. child.setAutofillId(structure.autofillId!!, childVirtualId) // Populate the child by providing properties such as value and type. child.setAutofillValue(childAutofillValue) child.setAutofillType(childAutofillType) // Some children can provide a list of values, such as when the child is // a spinner. val childAutofillOptions = arrayOf<CharSequence>("option1", "option2") child.setAutofillOptions(childAutofillOptions) // Just like other types of views, mark the data as sensitive when // appropriate. val sensitive = !contentIsSetFromResources() child.setDataIsSensitive(sensitive) }
জাভা
@Override public void onProvideAutofillVirtualStructure(ViewStructure structure, int flags) { super.onProvideAutofillVirtualStructure(structure, flags); // Create a new child in the virtual structure. structure.addChildCount(1); ViewStructure child = structure.newChild(childIndex); // Set the autofill ID for the child. child.setAutofillId(structure.getAutofillId(), childVirtualId); // Populate the child by providing properties such as value and type. child.setAutofillValue(childAutofillValue); child.setAutofillType(childAutofillType); // Some children can provide a list of values, such as when the child is // a spinner. CharSequence childAutofillOptions[] = { "option1", "option2" }; child.setAutofillOptions(childAutofillOptions); // Just like other types of views, mark the data as sensitive when // appropriate. boolean sensitive = !contentIsSetFromResources(); child.setDataIsSensitive(sensitive); }
যখন একটি ভার্চুয়াল কাঠামোর উপাদানগুলি পরিবর্তিত হয়, তখন নিম্নলিখিত কাজগুলি সম্পাদন করে কাঠামোকে অবহিত করুন:
-  যদি বাচ্চাদের ভিতরের ফোকাস পরিবর্তন হয়, তাহলে 
AutofillManagerঅবজেক্টেnotifyViewEntered()এবংnotifyViewExited()কল করুন। -  যদি কোনও চাইল্ডের মান পরিবর্তন হয়, তাহলে 
AutofillManagerঅবজেক্টেnotifyValueChanged()কল করুন। -  যদি ব্যবহারকারী কর্মপ্রবাহের একটি ধাপ সম্পন্ন করার কারণে ভিউ হায়ারার্কি আর উপলব্ধ না থাকে, যেমন লগইন ফর্ম ব্যবহার করে সাইন ইন করার সময়, তাহলে 
AutofillManagerঅবজেক্টেcommit()কল করুন। -  যদি ব্যবহারকারী কর্মপ্রবাহের একটি ধাপ বাতিল করার কারণে ভিউ হায়ারার্কি বৈধ না হয়, যেমন যখন ব্যবহারকারী লগইন ফর্ম সাফ করার জন্য একটি বোতামে ট্যাপ করেন, তাহলে 
AutofillManagerঅবজেক্টেcancel()কল করুন। 
অটোফিল ইভেন্টগুলিতে কলব্যাক ব্যবহার করুন
 যদি আপনার অ্যাপটি নিজস্ব অটোকম্পলিট ভিউ প্রদান করে, তাহলে আপনার এমন একটি প্রক্রিয়া প্রয়োজন যা অ্যাপটিকে UI অটোফিল অ্যাফোর্ডেন্সের পরিবর্তনের প্রতিক্রিয়ায় ভিউ সক্ষম বা অক্ষম করতে বলে। অটোফিল ফ্রেমওয়ার্কটি AutofillCallback আকারে এই প্রক্রিয়া প্রদান করে।
 এই ক্লাসে onAutofillEvent(View, int) পদ্ধতিটি প্রদান করা হয়, যা অ্যাপটি ভিউয়ের সাথে সম্পর্কিত অটোফিল অবস্থা পরিবর্তনের পরে কল করে। এই পদ্ধতির একটি ওভারলোডেড সংস্করণও রয়েছে যার মধ্যে একটি childId প্যারামিটার রয়েছে যা আপনার অ্যাপ ভার্চুয়াল ভিউয়ের সাথে ব্যবহার করতে পারে। উপলব্ধ অবস্থাগুলি কলব্যাকে ধ্রুবক হিসাবে সংজ্ঞায়িত করা হয়েছে।
 আপনি AutofillManager ক্লাসের registerCallback() পদ্ধতি ব্যবহার করে একটি কলব্যাক নিবন্ধন করতে পারেন। নিম্নলিখিত কোড উদাহরণটি দেখায় কিভাবে অটোফিল ইভেন্টের জন্য একটি কলব্যাক ঘোষণা করতে হয়: 
কোটলিন
val afm = context.getSystemService(AutofillManager::class.java) afm?.registerCallback(object : AutofillManager.AutofillCallback() { // For virtual structures, override // onAutofillEvent(View view, int childId, int event) instead. override fun onAutofillEvent(view: View, event: Int) { super.onAutofillEvent(view, event) when (event) { EVENT_INPUT_HIDDEN -> { // The autofill affordance associated with the view was hidden. } EVENT_INPUT_SHOWN -> { // The autofill affordance associated with the view was shown. } EVENT_INPUT_UNAVAILABLE -> { // Autofill isn't available. } } } })
জাভা
AutofillManager afm = getContext().getSystemService(AutofillManager.class); afm.registerCallback(new AutofillManager.AutofillCallback() { // For virtual structures, override // onAutofillEvent(View view, int childId, int event) instead. @Override public void onAutofillEvent(@NonNull View view, int event) { super.onAutofillEvent(view, event); switch (event) { case EVENT_INPUT_HIDDEN: // The autofill affordance associated with the view was hidden. break; case EVENT_INPUT_SHOWN: // The autofill affordance associated with the view was shown. break; case EVENT_INPUT_UNAVAILABLE: // Autofill isn't available. break; } } });
 কলব্যাকটি সরানোর সময় হলে, unregisterCallback() পদ্ধতিটি ব্যবহার করুন।
অটোফিল হাইলাইট করা ড্রয়েবল কাস্টমাইজ করুন
 যখন কোনও ভিউ অটোফিল করা হয়, তখন প্ল্যাটফর্মটি ভিউয়ের উপরে একটি Drawable রেন্ডার করে যা বোঝায় যে ভিউ কন্টেন্ট অটোফিল করা হয়েছে। ডিফল্টরূপে, এই ড্রয়েবলটি একটি সলিড আয়তক্ষেত্র যার একটি স্বচ্ছ রঙ থাকে যা ব্যাকগ্রাউন্ড আঁকার জন্য ব্যবহৃত থিমের রঙের চেয়ে সামান্য গাঢ়। ড্রয়েবলটি পরিবর্তন করার প্রয়োজন নেই, তবে অ্যাপ্লিকেশন বা কার্যকলাপে ব্যবহৃত থিমের android:autofilledHighlight আইটেমটি ওভাররাইড করে এটি কাস্টমাইজ করা যেতে পারে, যেমনটি এই উদাহরণে দেখানো হয়েছে:
রেজ/মান/স্টাইল.এক্সএমএল
<resources>
    <style name="MyAutofilledHighlight" parent="...">
        <item name="android:autofilledHighlight">@drawable/my_drawable</item>
    </style>
</resources>
রেজ/ড্রয়েবল/মাই_ড্রয়েবল.এক্সএমএল
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#4DFF0000" />
</shape>
অ্যান্ড্রয়েডম্যানিফেস্ট.এক্সএমএল
<application ...
    android:theme="@style/MyAutofilledHighlight">
<!-- or -->
<activity ...
    android:theme="@style/MyAutofilledHighlight">
অটোফিলের জন্য প্রমাণীকরণ করুন
একটি অটোফিল পরিষেবার জন্য ব্যবহারকারীকে আপনার অ্যাপের ক্ষেত্রগুলি সম্পূর্ণ করার আগে প্রমাণীকরণের প্রয়োজন হতে পারে, এই ক্ষেত্রে অ্যান্ড্রয়েড সিস্টেম আপনার কার্যকলাপের স্ট্যাকের অংশ হিসাবে পরিষেবার প্রমাণীকরণ কার্যকলাপ চালু করে।
 প্রমাণীকরণ সমর্থন করার জন্য আপনার অ্যাপ আপডেট করার প্রয়োজন নেই, কারণ প্রমাণীকরণ পরিষেবার মধ্যেই ঘটে। তবে, আপনাকে নিশ্চিত করতে হবে যে কার্যকলাপটি পুনরায় চালু করার সময় কার্যকলাপের ভিউ স্ট্রাকচারটি সংরক্ষিত আছে, যেমন onCreate() এ ভিউ স্ট্রাকচার তৈরি করে, onStart() বা onResume() এ নয়।
যখন কোনও অটোফিল পরিষেবার জন্য প্রমাণীকরণের প্রয়োজন হয়, তখন আপনার অ্যাপটি কীভাবে আচরণ করে তা যাচাই করতে আপনি AutofillFramework নমুনা থেকে HeuristicsService ব্যবহার করতে পারেন এবং এটিকে পূরণ প্রতিক্রিয়া প্রমাণীকরণের জন্য কনফিগার করতে পারেন। এই সমস্যাটি অনুকরণ করতে আপনি BadViewStructureCreationSignInActivity নমুনাও ব্যবহার করতে পারেন।
পুনর্ব্যবহৃত ভিউগুলিতে অটোফিল আইডি বরাদ্দ করুন
 RecyclerView ক্লাসের মতো ভিউ রিসাইকেল করে এমন কন্টেইনারগুলি এমন অ্যাপগুলির জন্য কার্যকর যেগুলিকে বৃহৎ ডেটা সেটের উপর ভিত্তি করে উপাদানগুলির স্ক্রোলিং তালিকা প্রদর্শন করতে হয়। কন্টেইনারটি স্ক্রোল করার সাথে সাথে, সিস্টেমটি লেআউটে ভিউ পুনরায় ব্যবহার করে, কিন্তু ভিউগুলিতে নতুন কন্টেন্ট থাকে।
যদি পুনর্ব্যবহৃত ভিউয়ের প্রাথমিক বিষয়বস্তু পূরণ করা হয়, তাহলে অটোফিল পরিষেবা তাদের অটোফিল আইডি ব্যবহার করে ভিউগুলির যৌক্তিক অর্থ ধরে রাখে। একটি সমস্যা দেখা দেয় যখন, সিস্টেম লেআউটে ভিউগুলি পুনরায় ব্যবহার করার সময়, ভিউগুলির লজিক্যাল আইডিগুলি একই থাকে, যার ফলে ভুল অটোফিল ব্যবহারকারীর ডেটা একটি অটোফিল আইডির সাথে যুক্ত হয়।
 অ্যান্ড্রয়েড ৯ (এপিআই লেভেল ২৮) এবং তার উপরে চলমান ডিভাইসগুলিতে এই সমস্যা সমাধানের জন্য, RecyclerView দ্বারা ব্যবহৃত ভিউগুলির অটোফিল আইডি স্পষ্টভাবে পরিচালনা করুন এই পদ্ধতিগুলি ব্যবহার করে:
-  
getNextAutofillId()পদ্ধতিটি একটি নতুন অটোফিল আইডি পায় যা কার্যকলাপের জন্য অনন্য। -  
setAutofillId()পদ্ধতিটি কার্যকলাপে এই ভিউয়ের অনন্য, লজিক্যাল অটোফিল আইডি সেট করে। 
জ্ঞাত সমস্যাগুলি সমাধান করুন
এই বিভাগটি অটোফিল কাঠামোর মধ্যে জ্ঞাত সমস্যাগুলির সমাধান উপস্থাপন করে।
অটোফিলের কারণে অ্যান্ড্রয়েড ৮.০, ৮.১-এ অ্যাপগুলি ক্র্যাশ হয়ে যায়
 অ্যান্ড্রয়েড ৮.০ (এপিআই লেভেল ২৬) এবং ৮.১ (এপিআই লেভেল ২৭) তে, অটোফিল কিছু পরিস্থিতিতে আপনার অ্যাপ ক্র্যাশ করতে পারে। সম্ভাব্য সমস্যা সমাধানের জন্য, importantForAutofill=no দিয়ে অটোফিল না করা যেকোনো ভিউ ট্যাগ করুন। আপনি importantForAutofill=noExcludeDescendants দিয়েও পুরো অ্যাক্টিভিটি ট্যাগ করতে পারেন।
আকার পরিবর্তন করা ডায়ালগগুলি অটোফিলের জন্য বিবেচনা করা হয় না
 অ্যান্ড্রয়েড ৮.১ (এপিআই লেভেল ২৭) এবং তার নিচের ভার্সনে, যদি কোনও ডায়ালগের ভিউ প্রদর্শিত হওয়ার পরেও আকার পরিবর্তন করা হয়, তাহলে ভিউটি অটোফিলের জন্য বিবেচিত হবে না। এই ভিউগুলি AssistStructure অবজেক্টে অন্তর্ভুক্ত নয় যা অ্যান্ড্রয়েড সিস্টেম অটোফিল পরিষেবায় পাঠায়। ফলস্বরূপ, পরিষেবাটি ভিউগুলি পূরণ করতে পারে না।
 এই সমস্যা সমাধানের জন্য, ডায়ালগ উইন্ডো প্যারামিটারের token প্রপার্টিটি ডায়ালগ তৈরিকারী অ্যাক্টিভিটির token প্রপার্টি দিয়ে প্রতিস্থাপন করুন। অটোফিল সক্রিয় আছে কিনা তা যাচাই করার পরে, Dialog থেকে উত্তরাধিকারসূত্রে প্রাপ্ত ক্লাসের onWindowAttributesChanged() পদ্ধতিতে উইন্ডো প্যারামিটারগুলি সংরক্ষণ করুন। তারপর, সংরক্ষিত প্যারামিটারগুলির token প্রপার্টিটি onAttachedToWindow() পদ্ধতিতে প্যারেন্ট অ্যাক্টিভিটির token প্রপার্টি দিয়ে প্রতিস্থাপন করুন।
নিম্নলিখিত কোড স্নিপেটটি এমন একটি ক্লাস দেখায় যা এই সমাধানটি বাস্তবায়ন করে:
কোটলিন
class MyDialog(context: Context) : Dialog(context) { // Used to store the dialog window parameters. private var token: IBinder? = null private val isDialogResizedWorkaroundRequired: Boolean get() { if (Build.VERSION.SDK_INT != Build.VERSION_CODES.O || Build.VERSION.SDK_INT != Build.VERSION_CODES.O_MR1) { return false } val autofillManager = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { context.getSystemService(AutofillManager::class.java) } else { null } return autofillManager?.isEnabled ?: false } override fun onWindowAttributesChanged(params: WindowManager.LayoutParams) { if (params.token == null && token != null) { params.token = token } super.onWindowAttributesChanged(params) } override fun onAttachedToWindow() { if (isDialogResizedWorkaroundRequired) { token = ownerActivity!!.window.attributes.token } super.onAttachedToWindow() } }
জাভা
public class MyDialog extends Dialog { public MyDialog(Context context) { super(context); } // Used to store the dialog window parameters. private IBinder token; @Override public void onWindowAttributesChanged(WindowManager.LayoutParams params) { if (params.token == null && token != null) { params.token = token; } super.onWindowAttributesChanged(params); } @Override public void onAttachedToWindow() { if (isDialogResizedWorkaroundRequired()) { token = getOwnerActivity().getWindow().getAttributes().token; } super.onAttachedToWindow(); } private boolean isDialogResizedWorkaroundRequired() { if (Build.VERSION.SDK_INT != Build.VERSION_CODES.O || Build.VERSION.SDK_INT != Build.VERSION_CODES.O_MR1) { return false; } AutofillManager autofillManager = null; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { autofillManager = getContext().getSystemService(AutofillManager.class); } return autofillManager != null && autofillManager.isEnabled(); } }
অপ্রয়োজনীয় ক্রিয়াকলাপ এড়াতে, নিম্নলিখিত কোড স্নিপেটটি দেখায় যে কীভাবে ডিভাইসে অটোফিল সমর্থিত কিনা এবং বর্তমান ব্যবহারকারীর জন্য সক্ষম কিনা এবং এই সমাধানটি প্রয়োজনীয় কিনা তা পরীক্ষা করবেন:
কোটলিন
// AutofillExtensions.kt fun Context.isDialogResizedWorkaroundRequired(): Boolean { // After the issue is resolved on Android, check whether the // workaround is still required for the current device. return isAutofillAvailable() } fun Context.isAutofillAvailable(): Boolean { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { // The autofill framework is available on Android 8.0 // or higher. return false } val afm = getSystemService(AutofillManager::class.java) // Return true if autofill is supported by the device and enabled // for the current user. return afm != null && afm.isEnabled }
জাভা
public class AutofillHelper { public static boolean isDialogResizedWorkaroundRequired(Context context) { // After the issue is resolved on Android, check whether the // workaround is still required for the current device. return isAutofillAvailable(context); } public static boolean isAutofillAvailable(Context context) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { // The autofill framework is available on Android 8.0 // or higher. return false; } AutofillManager afm = context.getSystemService(AutofillManager.class); // Return true if autofill is supported by the device and enabled // for the current user. return afm != null && afm.isEnabled(); } }
অটোফিল দিয়ে আপনার অ্যাপ পরীক্ষা করুন
অটোফিল পরিষেবাগুলির সাথে কাজ করার জন্য আপনার অ্যাপটি অপ্টিমাইজ করার পরে, এটি অটোফিল পরিষেবাগুলির সাথে উদ্দেশ্য অনুসারে কাজ করে কিনা তা পরীক্ষা করুন।
আপনার অ্যাপটি পরীক্ষা করার জন্য একটি এমুলেটর অথবা Android 8.0 (API লেভেল 26) বা তার বেশি ভার্সন চালিত একটি ফিজিক্যাল ডিভাইস ব্যবহার করুন। এমুলেটর তৈরি করার পদ্ধতি সম্পর্কে আরও তথ্যের জন্য, ভার্চুয়াল ডিভাইস তৈরি এবং পরিচালনা দেখুন।
একটি অটোফিল পরিষেবা ইনস্টল করুন
অটোফিল দিয়ে আপনার অ্যাপটি পরীক্ষা করার আগে, আপনাকে অন্য একটি অ্যাপ ইনস্টল করতে হবে যা অটোফিল পরিষেবা প্রদান করে। আপনি এই উদ্দেশ্যে একটি তৃতীয় পক্ষের অ্যাপ ব্যবহার করতে পারেন, তবে একটি নমুনা অটোফিল পরিষেবা ব্যবহার করা সহজ যাতে আপনাকে তৃতীয় পক্ষের পরিষেবার জন্য সাইন আপ করতে না হয়।
 আপনি জাভাতে অ্যান্ড্রয়েড অটোফিল ফ্রেমওয়ার্ক নমুনা ব্যবহার করে আপনার অ্যাপটি অটোফিল পরিষেবা দিয়ে পরীক্ষা করতে পারেন। নমুনা অ্যাপটি একটি অটোফিল পরিষেবা এবং ক্লায়েন্ট Activity ক্লাস প্রদান করে যা আপনি আপনার অ্যাপের সাথে ব্যবহার করার আগে ওয়ার্কফ্লো পরীক্ষা করতে ব্যবহার করতে পারেন। এই পৃষ্ঠাটি android-AutofillFramework নমুনা অ্যাপের উল্লেখ করে।
অ্যাপটি ইনস্টল করার পরে, এমুলেটরের সিস্টেম সেটিংসে সেটিংস > সিস্টেম > ভাষা এবং ইনপুট > উন্নত > ইনপুট সহায়তা > অটোফিল পরিষেবা -এ নেভিগেট করে অটোফিল পরিষেবা সক্ষম করুন।
ডেটা প্রয়োজনীয়তা বিশ্লেষণ করুন
অটোফিল পরিষেবা দিয়ে আপনার অ্যাপটি পরীক্ষা করার জন্য, পরিষেবাটির এমন ডেটা থাকা প্রয়োজন যা এটি আপনার অ্যাপটি পূরণ করতে ব্যবহার করতে পারে। পরিষেবাটিকে আপনার অ্যাপের ভিউতে কী ধরণের ডেটা প্রত্যাশিত তাও বুঝতে হবে। উদাহরণস্বরূপ, যদি আপনার অ্যাপের এমন একটি ভিউ থাকে যা একটি ব্যবহারকারীর নাম আশা করে, তাহলে পরিষেবাটির একটি ডেটাসেট থাকতে হবে যাতে একটি ব্যবহারকারীর নাম এবং কিছু প্রক্রিয়া থাকতে হবে যাতে জানা যায় যে ভিউটি এই ধরনের ডেটা আশা করে।
 android:autofillHints অ্যাট্রিবিউট সেট করে আপনার ভিউতে কী ধরণের ডেটা প্রত্যাশিত তা পরিষেবাটিকে বলুন। কিছু পরিষেবা ডেটার ধরণ নির্ধারণের জন্য অত্যাধুনিক হিউরিস্টিক ব্যবহার করে, কিন্তু অন্যান্য পরিষেবা, যেমন নমুনা অ্যাপ, এই তথ্য প্রদানের জন্য ডেভেলপারের উপর নির্ভর করে। আপনি যদি অটোফিলের জন্য প্রাসঙ্গিক ভিউতে android:autofillHints অ্যাট্রিবিউট সেট করেন তবে আপনার অ্যাপটি অটোফিল পরিষেবাগুলির সাথে আরও ভাল কাজ করে।
তোমার পরীক্ষা চালাও।
ডেটার প্রয়োজনীয়তা বিশ্লেষণ করার পরে, আপনি আপনার পরীক্ষা চালাতে পারেন, যার মধ্যে রয়েছে অটোফিল পরিষেবায় পরীক্ষার ডেটা সংরক্ষণ করা এবং আপনার অ্যাপে অটোফিল ট্রিগার করা।
পরিষেবাতে ডেটা সংরক্ষণ করুন
বর্তমানে সক্রিয় থাকা অটোফিল পরিষেবাতে ডেটা সংরক্ষণ করতে, নিম্নলিখিতগুলি করুন:
- এমন একটি অ্যাপ খুলুন যেখানে এমন একটি ভিউ থাকবে যা আপনার পরীক্ষার সময় আপনি যে ধরণের ডেটা ব্যবহার করতে চান তা আশা করে। android-AutofillFramework নমুনা অ্যাপটি UI-তে এমন ভিউ প্রদান করে যা বিভিন্ন ধরণের ডেটা আশা করে, যেমন ক্রেডিট কার্ড নম্বর এবং ব্যবহারকারীর নাম।
 - আপনার প্রয়োজনীয় ধরণের ডেটা ধারণ করে এমন ভিউতে ট্যাপ করুন।
 - ভিউতে একটি মান লিখুন।
 - নিশ্চিতকরণ বোতামে ট্যাপ করুন, যেমন সাইন ইন অথবা জমা দিন । পরিষেবাটি ডেটা সংরক্ষণ করার আগে আপনাকে সাধারণত ফর্মটি জমা দিতে হবে।
 - সিস্টেম ডায়ালগ থেকে অনুমতির অনুরোধ যাচাই করুন। সিস্টেম ডায়ালগটি বর্তমানে সক্রিয় পরিষেবাটির নাম দেখায় এবং জিজ্ঞাসা করে যে এটিই কি সেই পরিষেবা যা আপনি আপনার পরীক্ষায় ব্যবহার করতে চান। আপনি যদি পরিষেবাটি ব্যবহার করতে চান, তাহলে সংরক্ষণ করুন এ আলতো চাপুন।
 
যদি অ্যান্ড্রয়েড অনুমতি ডায়ালগ প্রদর্শন না করে, অথবা যদি পরিষেবাটি আপনার পরীক্ষায় ব্যবহার করতে চান এমনটি না হয়, তাহলে পরীক্ষা করুন যে পরিষেবাটি বর্তমানে সিস্টেম সেটিংসে সক্রিয় আছে কিনা।
আপনার অ্যাপে অটোফিল ট্রিগার করুন
আপনার অ্যাপে অটোফিল চালু করতে, নিম্নলিখিতগুলি করুন:
- আপনার অ্যাপটি খুলুন এবং সেই কার্যকলাপে যান যেখানে আপনি যে ভিউগুলি পরীক্ষা করতে চান।
 - যে ভিউটি পূরণ করতে হবে তাতে ট্যাপ করুন।
 - সিস্টেমটি অটোফিল UI প্রদর্শন করে, যার মধ্যে এমন ডেটাসেট রয়েছে যা ভিউ পূরণ করতে পারে, যেমনটি চিত্র 1-এ দেখানো হয়েছে।
 - আপনি যে ডেটা ব্যবহার করতে চান সেই ডেটাসেটে ট্যাপ করুন। ভিউটি পরিষেবাতে পূর্বে সংরক্ষিত ডেটা প্রদর্শন করে।
 

যদি অ্যান্ড্রয়েড অটোফিল UI প্রদর্শন না করে, তাহলে আপনি নিম্নলিখিত সমস্যা সমাধানের বিকল্পগুলি চেষ্টা করে দেখতে পারেন:
-  আপনার অ্যাপের ভিউগুলি 
android:autofillHintsঅ্যাট্রিবিউটে সঠিক মান ব্যবহার করছে কিনা তা পরীক্ষা করুন। অ্যাট্রিবিউটের সম্ভাব্য মানের তালিকার জন্য,Viewক্লাসেAUTOFILL_HINTএর সাথে প্রিফিক্স করা ধ্রুবকগুলি দেখুন। -  যে ভিউটি পূরণ করতে হবে, সেখানে 
android:importantForAutofillঅ্যাট্রিবিউটটিnoছাড়া অন্য কোনও মানে সেট করা আছে কিনা তা পরীক্ষা করুন, অথবা ভিউতে অথবা এর প্যারেন্টদের মধ্যে একটিতেnoExcludeDescendantsছাড়া অন্য কোনও মানে সেট করা আছে কিনা তা পরীক্ষা করুন।