যেসব অ্যাপ স্ট্যান্ডার্ড ভিউ ব্যবহার করে সেগুলি বিশেষ কনফিগারেশন ছাড়াই অটোফিল ফ্রেমওয়ার্কের সাথে কাজ করে। এছাড়াও, ফ্রেমওয়ার্কের সাথে আপনার অ্যাপ কীভাবে কাজ করে তা অপ্টিমাইজ করতে পারবেন।
অটোফিল এনভায়রনমেন্ট সেট-আপ করা
আপনার অ্যাপের জন্য কীভাবে প্রাথমিক অটোফিল কার্যকারিতা সেট-আপ করবেন তা এই বিভাগে বর্ণনা করা হয়েছে।
অটোফিল পরিষেবা কনফিগার করা
আপনার অ্যাপ যাতে অটোফিল ফ্রেমওয়ার্ক ব্যবহার করতে পারে তার জন্য আপনার ডিভাইসে অটোফিল পরিষেবা কনফিগার করা থাকতে হবে। যদিও Android 8.0 (API লেভেল ২৬) এবং তার পরবর্তী যেকোনও ভার্সনে চলা বেশিরভাগ ফোন এবং ট্যাবলেটে অটোফিল পরিষেবা থাকে, আমরা আপনাকে আপনার অ্যাপ পরীক্ষা করার সময় একটি পরীক্ষামূলক পরিষেবা ব্যবহার করার পরামর্শ দিই, যেমন Android অটোফিল ফ্রেমওয়ার্ক স্যাম্পেলে অটোফিল পরিষেবা। ইমুলেটর ব্যবহার করার সময়, স্পষ্টভাবে একটি অটোফিল পরিষেবা সেট করুন, কারণ ইমুলেটরে ডিফল্ট পরিষেবা নাও থাকতে পারে।
স্যাম্পেল অ্যাপ থেকে টেস্ট অটোফিল পরিষেবা ইনস্টল করার পরে, সেটিংস > সিস্টেম > ভাষা ও ইনপুট > উন্নত > ইনপুট সহায়তা > অটোফিল পরিষেবা বিকল্পে গিয়ে অটোফিল পরিষেবা চালু করুন।
অটোফিল পরীক্ষা করার জন্য এমুলেটর কনফিগার করা সম্পর্কে আরও তথ্য পেতে, অটোফিলের মাধ্যমে আপনার অ্যাপ পরীক্ষা করুন দেখুন।
ভিউয়ের জন্য অ্যাক্টিভিটি কন্টেক্সট ব্যবহার করুন
অটোফিল পরিষেবা সঠিকভাবে কাজ করার জন্য অ্যাক্টিভিটি কনটেক্সট প্রয়োজন। কোনও ভিউ
ইনস্ট্যান্টিয়েট করার সময়, Activity-কে
প্রসঙ্গ হিসেবে ব্যবহার করুন যাতে এটি সঠিকভাবে অটোফিল করা যায়।
অটোফিলের জন্য ইঙ্গিত প্রদান করুন
অটোফিল পরিষেবা হিউরিস্টিক ব্যবহার করে প্রতিটি ভিউয়ের ধরন নির্ধারণ করে। তবে, আপনার অ্যাপ যদি এই হিউরিস্টিকসের উপর নির্ভর করে, তাহলে আপনার অ্যাপ আপডেট করার সাথে সাথে অটোফিল আচরণ অপ্রত্যাশিতভাবে পরিবর্তিত হতে পারে। অটোফিল পরিষেবা আপনার অ্যাপের ফর্ম ফ্যাক্টর সঠিকভাবে শনাক্ত করেছে কিনা তা নিশ্চিত করতে, অটোফিল সংক্রান্ত ইঙ্গিত দিন।
আপনি
android:autofillHints
অ্যাট্রিবিউট ব্যবহার করে অটোফিল সংক্রান্ত ইঙ্গিত সেট করতে পারবেন। নিম্নলিখিত উদাহরণটি একটি
EditText-এ "password" ইঙ্গিত সেট করে:
<EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:autofillHints="password" />
এছাড়াও, আপনি
setAutofillHints()
পদ্ধতি ব্যবহার করে প্রোগ্রাম্যাটিক্যালি ইঙ্গিত সেট করতে পারেন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
Kotlin
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ব্যবহার করুন। - ফোন নম্বরের বিভিন্ন অংশের জন্য আলাদা ভিউ ব্যবহার করলে, আপনি নিম্নলিখিতগুলির মধ্যে যেকোনও একটি ব্যবহার করতে পারবেন:
একবার ব্যবহারের পাসওয়ার্ড (ওটিপি)
একবার ব্যবহারের পাসওয়ার্ডের জন্য, আপনি
AUTOFILL_HINT_SMS_OTP ব্যবহার করতে পারেন।
একাধিক ভিউয়ের ক্ষেত্রে, যেখানে প্রতিটি ভিউ ওটিপির একটি সংখ্যার সাথে ম্যাপ করে,
সেখানে আপনি
generateSmsOtpHintForCharacterPosition()
পদ্ধতি ব্যবহার করে প্রতিটি অক্ষরের জন্য ইঙ্গিত জেনারেট করতে পারবেন।
ওয়েবসাইট ও মোবাইল অ্যাপ ডেটা অ্যাসোসিয়েট করুন
অ্যাপ ও ওয়েবসাইট অ্যাসোসিয়েট করার পরে, Google-এর মাধ্যমে অটোফিলের মতো অটোফিল পরিষেবা, ব্রাউজার ও Android ডিভাইসের মধ্যে ব্যবহারকারীর লগ-ইন ডেটা শেয়ার করতে পারে। কোনও ব্যবহারকারী দুটি প্ল্যাটফর্মেই একই অটোফিল পরিষেবা বেছে নিলে, আপনার ওয়েব অ্যাপে সাইন-ইন করলে তার লগ-ইন ক্রেডেনশিয়াল অটোফিলের জন্য উপলভ্য হয়ে যায় যখন তিনি আপনার সংশ্লিষ্ট Android অ্যাপে সাইন-ইন করেন।
আপনার Android অ্যাপকে ওয়েবসাইটের সাথে অ্যাসোসিয়েট করতে, আপনার সাইটে
delegate_permission/common.get_login_creds রিলেশন সহ
ডিজিটাল অ্যাসেট লিঙ্ক হোস্ট করুন। তারপর,
আপনার অ্যাপের AndroidManifest.xml ফাইলে অ্যাসোসিয়েশন ঘোষণা করুন। আপনার Android অ্যাপের সাথে কীভাবে ওয়েবসাইট অ্যাসোসিয়েট করবেন সেই বিষয়ে বিস্তারিত
নির্দেশাবলীর জন্য,
অ্যাপ ও ওয়েবসাইট জুড়ে অটোমেটিক সাইন-ইন চালু করুন নিবন্ধটি দেখুন।
অটোফিল ওয়ার্কফ্লো সম্পূর্ণ করা
এই বিভাগে নির্দিষ্ট পরিস্থিতি বর্ণনা করা হয়েছে যেখানে আপনি নিজের অ্যাপের ব্যবহারকারীদের জন্য অটোফিল কার্যকারিতা উন্নত করতে পদক্ষেপ নিতে পারেন।
অটোফিল চালু আছে কিনা তা নির্ধারণ করুন
ব্যবহারকারীরা অটোফিল চালু বা বন্ধ করার পাশাপাশি সেটিংস > সিস্টেম > ভাষা ও ইনপুট > উন্নত > ইনপুট সহায়তা > অটোফিল পরিষেবা বিকল্পে গিয়ে অটোফিল পরিষেবা পরিবর্তন করতে পারবেন। আপনার অ্যাপ ব্যবহারকারীর অটোফিল সেটিংস ওভাররাইড করতে পারে না, তবে ব্যবহারকারীর জন্য অটোফিল উপলভ্য থাকলে, আপনি আপনার অ্যাপে বা আপনার অ্যাপের নির্দিষ্ট ভিউতে অতিরিক্ত অটোফিল কার্যকারিতা প্রয়োগ করতে পারেন।
যেমন,
TextView ব্যবহারকারীর জন্য অটোফিল চালু থাকলে ওভারফ্লো মেনুতে
অটোফিল এন্ট্রি দেখায়। ব্যবহারকারীর জন্য অটোফিল চালু করা আছে কিনা তা চেক করতে, AutofillManager অবজেক্টের
isEnabled()
পদ্ধতি কল করুন।
অটোফিল ছাড়াই ব্যবহারকারীদের জন্য আপনার সাইন-আপ এবং লগ-ইন অভিজ্ঞতা অপ্টিমাইজ করা হয়েছে কিনা তা নিশ্চিত করতে, এক-ট্যাপে সাইন-ইন প্রয়োগ করুন।
অটোফিল অনুরোধ জোর করে চালু করা
কখনও কখনও ব্যবহারকারীর অ্যাকশনের উত্তরে আপনাকে অটোফিল অনুরোধ
জোর করে করতে হতে পারে। যেমন, ব্যবহারকারী ভিউতে টাচ করে ধরে রাখলে, TextView একটি অটোফিল
মেনু আইটেম অফার করে।
অটোফিল অনুরোধ কীভাবে জোরপূর্বক করতে হয় তা নিম্নলিখিত কোডের উদাহরণ থেকে দেখানো হয়েছে:
Kotlin
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()
কল করুন।
নিম্নলিখিত কোডের উদাহরণ থেকে জানা যায় যে ভিউ স্ট্রাকচারে ডেটাকে কীভাবে সংবেদনশীল নয় হিসেবে চিহ্নিত করতে হয়:
Kotlin
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()-এ কল করে চাইল্ডের জন্য অটোফিল আইডি সেট করুন।- অটোফিল ভ্যালু ও টাইপের মতো প্রাসঙ্গিক প্রপার্টি সেট করুন।
- ভার্চুয়াল চাইল্ডের ডেটা সংবেদনশীল হলে,
true-কেsetDataIsSensitive()-এ পাস করুন; অন্যথায়,false-এ পাস করুন।
ভার্চুয়াল স্ট্রাকচারে কীভাবে নতুন চাইল্ড তৈরি করতে হয় তা নিম্নলিখিত কোড স্নিপেট থেকে জানতে পারবেন:
Kotlin
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()
পদ্ধতি ব্যবহার করে কলব্যাক রেজিস্টার করতে পারবেন। নিচের কোডের উদাহরণ থেকে বোঝা যাবে
কীভাবে অটোফিল ইভেন্টের জন্য কলব্যাক ঘোষণা করতে হয়:
Kotlin
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 আইটেম ওভাররাইড করে এটি কাস্টমাইজ করা যেতে পারে, যেমন এই উদাহরণে দেখানো হয়েছে:
res/values/styles.xml
<resources>
<style name="MyAutofilledHighlight" parent="...">
<item name="android:autofilledHighlight">@drawable/my_drawable</item>
</style>
</resources>
res/drawable/my_drawable.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#4DFF0000" />
</shape>
AndroidManifest.xml
<application ...
android:theme="@style/MyAutofilledHighlight">
<!-- or -->
<activity ...
android:theme="@style/MyAutofilledHighlight">
অটোফিলের জন্য যাচাই করুন
অটোফিল পরিষেবা আপনার অ্যাপে ফিল্ড সম্পূর্ণ করার আগে ব্যবহারকারীকে যাচাই করতে বলতে পারে, এই ক্ষেত্রে Android সিস্টেম আপনার অ্যাক্টিভিটি স্ট্যাকের অংশ হিসেবে পরিষেবার যাচাইকরণ অ্যাক্টিভিটি লঞ্চ করে।
যাচাইকরণকে সমর্থন করার জন্য আপনাকে নিজের অ্যাপ আপডেট করতে হবে না, কারণ
পরিষেবার মধ্যেই যাচাইকরণ হয়। তবে, অ্যাক্টিভিটি রিস্টার্ট করার সময়
অ্যাক্টিভিটির ভিউ স্ট্রাকচার যাতে সংরক্ষিত থাকে তা আপনাকে নিশ্চিত করতে হবে,
যেমন onCreate()-এ ভিউ স্ট্রাকচার তৈরি করে,
onStart() বা
onResume()-এ নয়।
অটোফিল পরিষেবার যাচাইকরণের প্রয়োজন হলে আপনার অ্যাপ কীভাবে কাজ করে তা আপনি যাচাই করতে পারবেন। এর জন্য AutofillFramework স্যাম্পেল থেকে HeuristicsService ব্যবহার করুন এবং ফিল রেসপন্স যাচাইকরণের প্রয়োজন হওয়ার জন্য এটি কনফিগার করুন। এছাড়াও, এই সমস্যাটি এমুলেট করতে আপনি BadViewStructureCreationSignInActivity sample ব্যবহার করতে পারেন।
রিসাইকেল করা ভিউতে অটোফিল আইডি অ্যাসাইন করুন
ভিউ রিসাইকেল করে এমন কন্টেনার, যেমন
RecyclerView ক্লাস, সেইসব অ্যাপের জন্য উপযোগী যেগুলিকে
বিশাল ডেটা সেটের উপর ভিত্তি করে এলিমেন্টের স্ক্রলিং তালিকা দেখাতে হয়। কন্টেনার স্ক্রল করার সাথে সাথে, সিস্টেম লেআউটে ভিউগুলি পুনরায় ব্যবহার করে, কিন্তু ভিউগুলিতে তখন নতুন কন্টেন্ট থাকে।
রিসাইকেল করা ভিউয়ের প্রাথমিক কন্টেন্ট পূরণ করা হলে, অটোফিল পরিষেবা অটোফিল আইডি ব্যবহার করে ভিউয়ের লজিক্যাল অর্থ ধরে রাখে। সমস্যা তখনই হয় যখন সিস্টেম লেআউটে ভিউ আবার ব্যবহার করে, ভিউয়ের লজিক্যাল আইডি একই থাকে, যার ফলে ভুল অটোফিল ব্যবহারকারীর ডেটা অটোফিল আইডির সাথে যুক্ত হয়।
Android 9 (API লেভেল ২৮) এবং তার পরবর্তী ভার্সনে চলা ডিভাইসে এই সমস্যার সমাধান করতে,
RecyclerView-এর মাধ্যমে ব্যবহার করা ভিউয়ের অটোফিল আইডি
এইসব পদ্ধতি ব্যবহার করে স্পষ্টভাবে ম্যানেজ করুন:
getNextAutofillId()পদ্ধতিটি একটি নতুন অটোফিল আইডি পায় যা অ্যাক্টিভিটির জন্য অনন্য।setAutofillId()পদ্ধতি অ্যাক্টিভিটিতে এই ভিউয়ের অনন্য, লজিক্যাল অটোফিল আইডি সেট করে।
পরিচিত সমস্যার সমাধান করা
এই বিভাগে অটোফিল ফ্রেমওয়ার্কের মধ্যে পরিচিত সমস্যার সমাধান দেখানো হয়েছে।
Android 8.0, 8.1 ভার্সনে অটোফিলের কারণে অ্যাপ ক্র্যাশ করে
Android 8.0 (API লেভেল ২৬) এবং 8.1 (API লেভেল ২৭)-এ, অটোফিল নির্দিষ্ট পরিস্থিতিতে আপনার
অ্যাপ ক্র্যাশ করতে পারে। সম্ভাব্য সমস্যা এড়াতে, importantForAutofill=no-এর মাধ্যমে অটোফিল করা হয়নি এমন যেকোনও
ভিউ ট্যাগ করুন। এছাড়াও, আপনি importantForAutofill=noExcludeDescendants-এর সাথে
পুরো অ্যাক্টিভিটি ট্যাগ করতে পারবেন।
ছোট বড় করা ডায়ালগ অটোফিলের জন্য বিবেচনা করা হয় না
Android 8.1 (API লেভেল ২৭) এবং তার আগের ভার্সনে, ডায়ালগে কোনও ভিউ দেখানোর পরে সেটির সাইজ পরিবর্তন করা হলে,
সেই ভিউ অটোফিলের জন্য বিবেচনা করা হয় না। এইসব ভিউ
AssistStructure অবজেক্টে অন্তর্ভুক্ত থাকে না,
যা Android সিস্টেম
অটোফিল পরিষেবায় পাঠায়। এর ফলে, পরিষেবাটি ভিউ পূরণ করতে পারছে না।
এই সমস্যার সমাধান করতে, ডায়ালগ উইন্ডো প্যারামিটারের
token
প্রপার্টি, ডায়ালগ তৈরি করে এমন অ্যাক্টিভিটির token প্রপার্টি দিয়ে
পরিবর্তন করুন। অটোফিল চালু আছে কিনা তা যাচাই করার পরে,
Dialog
থেকে ইনহেরিট করা ক্লাসের
onWindowAttributesChanged()
মেথডে উইন্ডো প্যারামিটার সেভ করুন। তারপর, onAttachedToWindow()
মেথডে সেভ করা প্যারামিটারের token প্রপার্টিকে
মূল অ্যাক্টিভিটির token প্রপার্টি দিয়ে
পরিবর্তন করুন।
নিম্নলিখিত কোড স্নিপেট এমন একটি ক্লাস দেখায় যা এই সমাধান প্রয়োগ করে:
Kotlin
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();
}
}
অপ্রয়োজনীয় অপারেশন এড়াতে, নিম্নলিখিত কোড স্নিপেট দেখায় যে ডিভাইসে অটোফিল কাজ করে কিনা এবং বর্তমান ব্যবহারকারীর জন্য চালু আছে কিনা, এবং এই ওয়ার্কঅ্যারাউন্ড প্রয়োজন কিনা:
Kotlin
// 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 লেভেল ২৬) বা তার পরবর্তী যেকোনও ভার্সনে চলে এমন এমুলেটর বা ফিজিক্যাল ডিভাইস ব্যবহার করুন। এমুলেটর কীভাবে তৈরি করতে হয় সেই সম্পর্কে আরও তথ্য পেতে, ভার্চুয়াল ডিভাইস তৈরি ও ম্যানেজ করুন দেখুন।
অটোফিল পরিষেবা ইনস্টল করুন
অটোফিলের মাধ্যমে আপনার অ্যাপ পরীক্ষা করার আগে, আপনাকে অন্য একটি অ্যাপ ইনস্টল করতে হবে যা অটোফিল পরিষেবা প্রদান করে। এই উদ্দেশ্যে আপনি থার্ড-পার্টি অ্যাপ ব্যবহার করতে পারেন, তবে স্যাম্পেল অটোফিল পরিষেবা ব্যবহার করা আরও সহজ, যাতে আপনাকে থার্ড-পার্টি পরিষেবার জন্য সাইন-আপ করতে না হয়।
অটোফিল পরিষেবার মাধ্যমে আপনার অ্যাপ পরীক্ষা করতে, আপনি Java-তে
Android অটোফিল ফ্রেমওয়ার্ক স্যাম্পেল ব্যবহার করতে পারেন। স্যাম্পেল অ্যাপটি একটি অটোফিল পরিষেবা এবং ক্লায়েন্ট Activity ক্লাস প্রদান করে যা আপনি নিজের অ্যাপের সাথে ব্যবহার করার আগে ওয়ার্কফ্লো পরীক্ষা করার জন্য ব্যবহার করতে পারেন। এই পৃষ্ঠাটি android-AutofillFramework স্যাম্পেল অ্যাপকে রেফারেন্স করে।
অ্যাপ ইনস্টল করার পরে, এমুলেটরের সিস্টেম সেটিংসে গিয়ে অটোফিল পরিষেবা চালু করুন। এর জন্য সেটিংস > সিস্টেম > ভাষা ও ইনপুট > উন্নত > ইনপুট সহায়তা > অটোফিল পরিষেবা বিকল্পে যান।
ডেটা সংক্রান্ত প্রয়োজনীয়তা বিশ্লেষণ করুন
অটোফিল পরিষেবার মাধ্যমে আপনার অ্যাপ পরীক্ষা করতে, পরিষেবার কাছে এমন ডেটা থাকতে হবে যা এটি আপনার অ্যাপ পূরণ করতে ব্যবহার করতে পারে। পরিষেবাকে এটিও বুঝতে হবে যে আপনার অ্যাপের ভিউতে কী ধরনের ডেটা প্রত্যাশিত। উদাহরণস্বরূপ, আপনার অ্যাপে যদি এমন একটি ভিউ থাকে যা একটি ইউজারনেম প্রত্যাশা করে, তাহলে পরিষেবার কাছে অবশ্যই একটি ডেটাসেট থাকতে হবে যাতে একটি ইউজারনেম এবং ভিউটি এই ধরনের ডেটা প্রত্যাশা করে তা জানার জন্য কিছু মেকানিজম থাকে।
android:autofillHints অ্যাট্রিবিউট সেট করে, আপনার ভিউতে কী ধরনের ডেটা প্রত্যাশিত তা পরিষেবাকে জানান। কিছু পরিষেবা ডেটার ধরন নির্ধারণ করতে অত্যাধুনিক হিউরিস্টিক ব্যবহার করে, কিন্তু অন্যান্য পরিষেবা, যেমন স্যাম্পেল অ্যাপ, এই তথ্য প্রদান করার জন্য
ডেভেলপারের উপর নির্ভর করে। অটোফিলের জন্য প্রাসঙ্গিক ভিউতে android:autofillHints অ্যাট্রিবিউট সেট করলে,
আপনার অ্যাপ অটোফিল পরিষেবার সাথে
আরও ভালোভাবে কাজ করে।
আপনার টেস্ট রান করুন
ডেটার প্রয়োজনীয়তা বিশ্লেষণ করার পরে, আপনি টেস্ট চালাতে পারবেন, যার মধ্যে অটোফিল পরিষেবায় টেস্ট ডেটা সেভ করা এবং আপনার অ্যাপে অটোফিল ট্রিগার করা অন্তর্ভুক্ত।
পরিষেবায় ডেটা সেভ করা
বর্তমানে অ্যাক্টিভ থাকা অটোফিল পরিষেবায় ডেটা সেভ করতে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন:
- এমন একটি অ্যাপ খুলুন যাতে এমন একটি ভিউ আছে যা আপনার পরীক্ষার সময় আপনি যে ধরনের ডেটা ব্যবহার করতে চান তা আশা করে। android-AutofillFramework স্যাম্পেল অ্যাপ UI প্রদান করে যার ভিউতে ক্রেডিট কার্ড নম্বর ও ইউজারনেমের মতো বিভিন্ন ধরনের ডেটা প্রত্যাশিত।
- আপনার যে ধরনের ডেটা প্রয়োজন, সেই ডেটা যে ভিউতে আছে সেটিতে ট্যাপ করুন।
- ভিউতে একটি ভ্যালু লিখুন।
- সাইন-ইন করুন বা জমা দিন-এর মতো কনফার্মেশন বোতামে ট্যাপ করুন। পরিষেবা ডেটা সেভ করার আগে সাধারণত আপনাকে ফর্ম জমা দিতে হয়।
- সিস্টেম ডায়ালগ থেকে অনুমতির অনুরোধ যাচাই করুন। সিস্টেম ডায়ালগ বর্তমানে অ্যাক্টিভ থাকা পরিষেবার নাম দেখায় এবং জিজ্ঞাসা করে যে আপনি এই পরিষেবাটিই আপনার টেস্টে ব্যবহার করতে চান কিনা। আপনি পরিষেবাটি ব্যবহার করতে চাইলে, সেভ করুন বিকল্পে ট্যাপ করুন।
Android যদি অনুমতির ডায়ালগ না দেখায় অথবা আপনি যে পরিষেবাটি টেস্ট করতে চান সেটি যদি না হয়, তাহলে সিস্টেম সেটিংসে গিয়ে চেক করুন যে পরিষেবাটি বর্তমানে অ্যাক্টিভ আছে কিনা।
আপনার অ্যাপে অটোফিল ট্রিগার করা
আপনার অ্যাপে অটোফিল ট্রিগার করতে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন:
- আপনার অ্যাপ খুলুন এবং যে অ্যাক্টিভিটিতে আপনি পরীক্ষা করতে চান এমন ভিউ আছে সেখানে যান।
- যে ভিউ পূরণ করতে হবে সেটিতে ট্যাপ করুন।
- সিস্টেমটি অটোফিল UI প্রদর্শন করে, যাতে ডেটাসেট থাকে যা ভিউ পূরণ করতে পারে, যেমন চিত্র ১-এ দেখানো হয়েছে।
- আপনি যে ডেটা ব্যবহার করতে চান সেটি যে ডেটাসেটে আছে তাতে ট্যাপ করুন। ভিউতে পরিষেবায় আগে থেকে স্টোর করা ডেটা দেখা যায়।
Android যদি অটোফিল UI না দেখায়, তাহলে আপনি নিম্নলিখিত সমস্যার সমাধানকরণ বিকল্পগুলি ব্যবহার করে দেখতে পারেন:
- আপনার অ্যাপের ভিউতে
android:autofillHintsঅ্যাট্রিবিউটে সঠিক ভ্যালু ব্যবহার করা হয়েছে কিনা তা চেক করুন। অ্যাট্রিবিউটের সম্ভাব্য ভ্যালুর তালিকা দেখতে,Viewক্লাসেAUTOFILL_HINT-এর সাথে প্রিফিক্স করা কনস্ট্যান্ট দেখুন। - যে ভিউ পূরণ করতে হবে, সেখানে
android:importantForAutofillঅ্যাট্রিবিউটnoছাড়া অন্য কোনও ভ্যালুতে সেট করা আছে কিনা অথবা ভিউ বা তার কোনও মূল এলিমেন্টেnoExcludeDescendantsছাড়া অন্য কোনও ভ্যালুতে সেট করা আছে কিনা তা চেক করুন।