আপনার ব্যবহারকারীরা পাসকি দিয়ে প্রমাণীকরণ করার আগে, আপনার অ্যাপটিকে অবশ্যই প্রথমে তাদের অ্যাকাউন্টের জন্য পাসকিটি নিবন্ধন বা তৈরি করতে হবে।
পাসকি তৈরি করতে, আপনার অ্যাপ সার্ভার থেকে পাসকি তৈরির জন্য প্রয়োজনীয় বিবরণ সংগ্রহ করুন এবং তারপরে ক্রেডেনশিয়াল ম্যানেজার এপিআই (Credential Manager API) কল করুন, যা একটি পাবলিক এবং প্রাইভেট কী পেয়ার (public and private key pair) ফেরত দেয়। ফেরত আসা প্রাইভেট কী-টি গুগল পাসওয়ার্ড ম্যানেজারের (Google Password Manager) মতো একটি ক্রেডেনশিয়াল প্রোভাইডারে পাসকি হিসেবে সংরক্ষণ করা হয়। পাবলিক কী-টি আপনার অ্যাপ সার্ভারে সংরক্ষণ করা থাকে।

পূর্বশর্ত
নিশ্চিত করুন যে আপনি ডিজিটাল অ্যাসেট লিঙ্ক সেট আপ করেছেন এবং অ্যান্ড্রয়েড ৯ (এপিআই লেভেল ২৮) বা তার উচ্চতর সংস্করণে চালিত ডিভাইসগুলোকে টার্গেট করছেন।
সংক্ষিপ্ত বিবরণ
এই নির্দেশিকাটি একটি পাসকি তৈরি করার জন্য আপনার রিলায়িং পার্টি ক্লায়েন্ট অ্যাপে প্রয়োজনীয় পরিবর্তনগুলির উপর আলোকপাত করে এবং রিলায়িং পার্টি অ্যাপ সার্ভার বাস্তবায়নের একটি সংক্ষিপ্ত বিবরণ দেয়। সার্ভার-সাইড ইন্টিগ্রেশন সম্পর্কে আরও জানতে, সার্ভার-সাইড পাসকি রেজিস্ট্রেশন দেখুন।
- আপনার অ্যাপে নির্ভরতা যোগ করুন : প্রয়োজনীয় ক্রেডেনশিয়াল ম্যানেজার লাইব্রেরিগুলো যোগ করুন।
- ক্রেডেনশিয়াল ম্যানেজার ইনস্ট্যানশিয়েট করুন : একটি ক্রেডেনশিয়াল ম্যানেজার ইনস্ট্যান্স তৈরি করুন।
- অ্যাপ সার্ভার থেকে ক্রেডেনশিয়াল তৈরির বিকল্পগুলি নিন : আপনার অ্যাপ সার্ভার থেকে, ক্লায়েন্ট অ্যাপে পাসকি তৈরি করার জন্য প্রয়োজনীয় বিবরণ পাঠান, যেমন অ্যাপ ও ব্যবহারকারীর তথ্য, সেইসাথে একটি
challengeএবং অন্যান্য ফিল্ড। - পাসকি-র জন্য অনুরোধ করুন : আপনার অ্যাপে, অ্যাপ সার্ভার থেকে প্রাপ্ত বিবরণ ব্যবহার করে একটি
GetPublicKeyCredentialOptionঅবজেক্ট তৈরি করুন এবং এই অবজেক্টটি ব্যবহার করেcredentialManager.getCredential()মেথডটি কল করে একটি পাসকি তৈরি করুন। - পাসকি তৈরির প্রতিক্রিয়া পরিচালনা করুন : যখন আপনি আপনার ক্লায়েন্ট অ্যাপে ক্রেডেনশিয়ালগুলি পাবেন, তখন আপনাকে অবশ্যই পাবলিক কী-টি এনকোড, সিরিয়ালাইজ করে অ্যাপ সার্ভারে পাঠাতে হবে। পাসকি তৈরির ক্ষেত্রে ঘটতে পারে এমন প্রতিটি ব্যতিক্রমও আপনাকে অবশ্যই পরিচালনা করতে হবে।
- সার্ভারে পাবলিক কী যাচাই ও সংরক্ষণ করুন : ক্রেডেনশিয়ালের উৎস যাচাই করার জন্য সার্ভার-সাইডের ধাপগুলো সম্পন্ন করুন এবং তারপর পাবলিক কী সংরক্ষণ করুন।
- ব্যবহারকারীকে অবহিত করুন : ব্যবহারকারীকে জানান যে তার পাসকি তৈরি করা হয়েছে।
আপনার অ্যাপে নির্ভরতা যোগ করুন
আপনার অ্যাপ মডিউলের build.gradle ফাইলে নিম্নলিখিত ডিপেন্ডেন্সিগুলো যোগ করুন:
কোটলিন
dependencies { implementation("androidx.credentials:credentials:1.7.0-alpha02") implementation("androidx.credentials:credentials-play-services-auth:1.7.0-alpha02") }
গ্রোভি
dependencies { implementation "androidx.credentials:credentials:1.7.0-alpha02" implementation "androidx.credentials:credentials-play-services-auth:1.7.0-alpha02" }
ক্রেডেনশিয়াল ম্যানেজার ইনস্ট্যানশিয়েট করুন
আপনার অ্যাপ বা অ্যাক্টিভিটি কনটেক্সট ব্যবহার করে একটি CredentialManager অবজেক্ট তৈরি করুন।
// Use your app or activity context to instantiate a client instance of
// CredentialManager.
private val credentialManager = CredentialManager.create(context)
আপনার অ্যাপ সার্ভার থেকে ক্রেডেনশিয়াল তৈরির বিকল্পগুলি পান
যখন ব্যবহারকারী "Create Passkey" বোতামে ক্লিক করেন অথবা যখন কোনো নতুন ব্যবহারকারী সাইন আপ করেন, তখন পাসকি নিবন্ধন প্রক্রিয়া শুরু করার জন্য প্রয়োজনীয় তথ্য সংগ্রহ করতে আপনার অ্যাপ থেকে আপনার অ্যাপ সার্ভারে একটি অনুরোধ পাঠান।
আপনার ক্লায়েন্ট অ্যাপে পাসকি তৈরি করার জন্য প্রয়োজনীয় তথ্য, যেমন ব্যবহারকারী, অ্যাপ এবং অতিরিক্ত কনফিগারেশন প্রোপার্টি সম্পর্কিত তথ্য পাঠাতে, আপনার অ্যাপ সার্ভারে একটি FIDO-সম্মত লাইব্রেরি ব্যবহার করুন। আরও জানতে, সার্ভার সাইড পাসকি রেজিস্ট্রেশন দেখুন।
ক্লায়েন্ট অ্যাপে, অ্যাপ সার্ভার থেকে পাঠানো পাবলিক কী তৈরির অপশনগুলো ডিকোড করুন। এগুলো সাধারণত JSON ফরম্যাটে থাকে। ওয়েব ক্লায়েন্টদের জন্য এই ডিকোডিং কীভাবে করা হয় সে সম্পর্কে আরও জানতে, এনকোডিং এবং ডিকোডিং দেখুন। অ্যান্ড্রয়েড ক্লায়েন্ট অ্যাপের জন্য, আপনাকে ডিকোডিং আলাদাভাবে করতে হবে।
নিম্নলিখিত কোড স্নিপেটটি অ্যাপ সার্ভার দ্বারা প্রেরিত পাবলিক কী তৈরির অপশনগুলোর কাঠামো দেখায়:
{
"challenge": "<base64url-encoded challenge>",
"rp": {
"name": "<relying party name>",
"id": "<relying party host name>"
},
"user": {
"id": "<base64url-encoded user ID>",
"name": "<user name>",
"displayName": "<user display name>"
},
"pubKeyCredParams": [
{
"type": "public-key",
"alg": -7
}
],
"attestation": "none",
"excludeCredentials": [
{
"id": "<base64url-encoded credential ID to exclude>",
"type": "public-key"
}
],
"authenticatorSelection": {
"requireResidentKey": true,
"residentKey": "required",
"userVerification": "required"
}
}
পাবলিক কী তৈরির বিকল্পগুলিতে অন্তর্ভুক্ত মূল ক্ষেত্রগুলি হলো:
-
challenge: সার্ভার দ্বারা তৈরি একটি র্যান্ডম স্ট্রিং যা রিপ্লে অ্যাটাক প্রতিরোধ করতে ব্যবহৃত হয়। -
rp: অ্যাপটি সম্পর্কে বিস্তারিত তথ্য।-
rp.name: অ্যাপটির নাম। -
rp.id: অ্যাপটির ডোমেইন বা সাবডোমেইন।
-
-
user: ব্যবহারকারীর বিবরণ।-
id: ব্যবহারকারীর অনন্য আইডি। এই মানে ব্যক্তিগত শনাক্তকারী তথ্য, যেমন ইমেল ঠিকানা বা ইউজারনেম অন্তর্ভুক্ত করা যাবে না। আপনি একটি র্যান্ডম, ১৬-বাইট মান ব্যবহার করতে পারেন। -
name: অ্যাকাউন্টের জন্য একটি অনন্য শনাক্তকারী যা ব্যবহারকারী চিনতে পারবেন, যেমন তার ইমেল ঠিকানা বা ইউজারনেম। এটি অ্যাকাউন্ট সিলেক্টরে প্রদর্শিত হবে। ইউজারনেম ব্যবহার করলে, পাসওয়ার্ড অথেনটিকেশনের মতোই একই মান ব্যবহার করুন। -
displayName: অ্যাকাউন্ট সিলেক্টরে প্রদর্শনের জন্য অ্যাকাউন্টের একটি ঐচ্ছিক ও ব্যবহার-বান্ধব নাম।
-
authenticatorSelection: প্রমাণীকরণের জন্য যে ডিভাইসটি ব্যবহার করা হবে তার বিবরণ।-
authenticatorAttachment: পছন্দের অথেন্টিকেটর নির্দেশ করে। সম্ভাব্য মানগুলো নিম্নরূপ: -platform: এই মানটি ব্যবহারকারীর ডিভাইসে বিল্ট-ইন থাকা অথেন্টিকেটরের জন্য ব্যবহৃত হয়, যেমন ফিঙ্গারপ্রিন্ট সেন্সর। -cross-platform: এই মানটি রোমিং ডিভাইস, যেমন সিকিউরিটি কী-এর জন্য ব্যবহৃত হয়। এটি সাধারণত পাসকি প্রসঙ্গে ব্যবহৃত হয় না। - Unspecified (প্রস্তাবিত): এই মানটি অনির্দিষ্ট রাখলে ব্যবহারকারীরা তাদের পছন্দের ডিভাইসে পাসকি তৈরি করার স্বাধীনতা পান। বেশিরভাগ ক্ষেত্রে, প্যারামিটারটি অনির্দিষ্ট রাখাই সেরা বিকল্প।-
requireResidentKey: একটি পাসকি তৈরি করতে, এইBooleanফিল্ডের মানtrueসেট করুন। -
residentKey: একটি পাসকি তৈরি করতে, এর মানrequiredসেট করুন। -
userVerification: পাসকি নিবন্ধনের সময় ব্যবহারকারী যাচাইকরণের জন্য প্রয়োজনীয়তা নির্দিষ্ট করতে ব্যবহৃত হয়। সম্ভাব্য মানগুলি নিম্নরূপ: -preferred): এই মানটি ব্যবহার করুন যদি আপনি সুরক্ষার চেয়ে ব্যবহারকারীর অভিজ্ঞতাকে বেশি অগ্রাধিকার দেন, যেমন এমন পরিবেশে যেখানে ব্যবহারকারী যাচাইকরণ সুরক্ষার চেয়ে বেশি অসুবিধা সৃষ্টি করে। -required): এই মানটি ব্যবহার করুন যদি ডিভাইসে উপলব্ধ কোনো ব্যবহারকারী যাচাইকরণ পদ্ধতি ব্যবহার করা আবশ্যক হয়। -discouraged): এই মানটি ব্যবহার করুন যদি কোনো ব্যবহারকারী যাচাইকরণ পদ্ধতি ব্যবহার করা নিরুৎসাহিত করা হয়।
userVerificationসম্পর্কে আরও জানতে, userVerification deep dive দেখুন।
-
-
excludeCredentials: ক্রেডেনশিয়াল আইডিগুলোকে একটি অ্যারেতে তালিকাভুক্ত করে, যাতে একই ক্রেডেনশিয়াল প্রোভাইডারের অধীনে আগে থেকেই একটি পাসকি বিদ্যমান থাকলে তার সদৃশ তৈরি হওয়া প্রতিরোধ করা যায়।
একটি পাসকি তৈরি করুন
সার্ভার-সাইড পাবলিক কী তৈরির অপশনগুলো পার্স করার পর, এই অপশনগুলোকে একটি CreatePublicKeyCredentialRequest অবজেক্টে র্যাপ করে এবং createCredential() কল করে একটি পাসকী তৈরি করুন।
createPublicKeyCredentialRequest এ নিম্নলিখিত বিষয়গুলো অন্তর্ভুক্ত রয়েছে:
-
requestJson: অ্যাপ সার্ভার কর্তৃক প্রেরিত ক্রেডেনশিয়াল তৈরির বিকল্পসমূহ। -
preferImmediatelyAvailableCredentials: এটি একটি ঐচ্ছিক বুলিয়ান ফিল্ড যা নির্ধারণ করে যে অনুরোধটি পূরণ করার জন্য সিকিউরিটি কী বা হাইব্রিড কী ফ্লো থেকে প্রাপ্ত ক্রেডেনশিয়ালের পরিবর্তে শুধুমাত্র স্থানীয়ভাবে উপলব্ধ বা ক্রেডেনশিয়াল প্রোভাইডার-সিঙ্ক করা ক্রেডেনশিয়াল ব্যবহার করা হবে কিনা। এর সম্ভাব্য ব্যবহারগুলো নিম্নরূপ:-
false(ডিফল্ট): যদি ক্রেডেনশিয়াল ম্যানেজারে কলটি ব্যবহারকারীর কোনো সুস্পষ্ট কার্যকলাপের মাধ্যমে শুরু হয়ে থাকে, তাহলে এই মানটি ব্যবহার করুন। -
true: এই মানটি ব্যবহার করুন যদি ক্রেডেনশিয়াল ম্যানেজার সুযোগ বুঝে কল করা হয়, যেমন অ্যাপটি প্রথমবার খোলার সময়।
যদি আপনি মানটি 'trueসেট করেন এবং তাৎক্ষণিকভাবে কোনো ক্রেডেনশিয়াল উপলব্ধ না থাকে, তাহলে ক্রেডেনশিয়াল ম্যানেজার কোনো UI দেখাবে না এবং অনুরোধটি সঙ্গে সঙ্গে ব্যর্থ হবে। সেক্ষেত্রে 'get' অনুরোধের জন্য NoCredentialException এবং 'create' অনুরোধের জন্যCreateCredentialNoCreateOptionExceptionরিটার্ন করা হবে।
-
-
origin: এই ফিল্ডটি অ্যান্ড্রয়েড অ্যাপের জন্য স্বয়ংক্রিয়ভাবে সেট করা হয়। ব্রাউজার এবং অনুরূপ সুবিধাপ্রাপ্ত অ্যাপ, যাদেরoriginসেট করার প্রয়োজন, তাদের জন্য ‘সুবিধাপ্রাপ্ত অ্যাপের জন্য অন্য পক্ষের হয়ে ক্রেডেনশিয়াল ম্যানেজার কল করুন’ দেখুন। -
isConditional: এটি একটি ঐচ্ছিক ক্ষেত্র যার ডিফল্ট মানfalse। আরও তথ্যের জন্য, Automatically create a passkey দেখুন।
createCredential() ফাংশনটি কল করলে ক্রেডেনশিয়াল ম্যানেজারের বিল্ট-ইন বটম শীট UI চালু হয়, যা ব্যবহারকারীকে একটি পাসকি ব্যবহার করতে এবং সংরক্ষণের জন্য একটি ক্রেডেনশিয়াল প্রোভাইডার ও অ্যাকাউন্ট নির্বাচন করতে অনুরোধ করে। তবে, যদি isConditional ` true সেট করা হয়, তাহলে বটম শীট UI প্রদর্শিত হয় না এবং পাসকিটি স্বয়ংক্রিয়ভাবে তৈরি হয়ে যায়।
স্বয়ংক্রিয়ভাবে একটি পাসকি তৈরি করুন
সফলভাবে পাসওয়ার্ড লগইন করার পর, পাসকি তৈরি করার সময় আপনার CreatePublicKeyCredentialRequest এ isConditional প্যারামিটারটিকে true সেট করে আপনি ব্যবহারকারীর জন্য স্বয়ংক্রিয়ভাবে একটি পাসকি তৈরি করতে পারেন। যদি ব্যবহারকারীর আগে থেকে কোনো পাসকি না থাকে, তাহলে আপনার অ্যাপটি স্বয়ংক্রিয়ভাবে ব্যাকগ্রাউন্ডে একটি পাসকি তৈরি করার চেষ্টা করবে এবং সেটি ব্যবহারকারীর ক্রেডেনশিয়াল প্রোভাইডারে, যেমন গুগল পাসওয়ার্ড ম্যানেজারে, সংরক্ষণ করবে। এটি কীভাবে প্রয়োগ করা হয়েছে তার একটি উদাহরণের জন্য, পাবলিক স্যাম্পলটি দেখুন।
প্রতিক্রিয়াটি সামলান।
ডিভাইসের স্ক্রিন লক ব্যবহার করে ব্যবহারকারীকে যাচাই করার পর, একটি পাসকি তৈরি করা হয় এবং ব্যবহারকারীর নির্বাচিত ক্রেডেনশিয়াল প্রোভাইডারে তা সংরক্ষণ করা হয়।
createCredential() সফলভাবে কল করার পর প্রাপ্ত প্রতিক্রিয়াটি একটি PublicKeyCredential অবজেক্ট।
PublicKeyCredential দেখতে নিম্নরূপ:
{
"id": "<identifier>",
"type": "public-key",
"rawId": "<identifier>",
"response": {
"clientDataJSON": "<ArrayBuffer encoded object with the origin and signed challenge>",
"attestationObject": "<ArrayBuffer encoded object with the public key and other information.>"
},
"authenticatorAttachment": "platform"
}
ক্লায়েন্ট অ্যাপে অবজেক্টটিকে সিরিয়ালাইজ করে অ্যাপ সার্ভারে পাঠিয়ে দিন।
নিম্নলিখিত কোড স্নিপেটে দেখানো অনুযায়ী ব্যর্থতা সামলানোর জন্য কোড যোগ করুন:
fun handleFailure(e: CreateCredentialException) {
when (e) {
is CreatePublicKeyCredentialDomException -> {
// Handle the passkey DOM errors thrown according to the
// WebAuthn spec.
}
is CreateCredentialCancellationException -> {
// The user intentionally canceled the operation and chose not
// to register the credential.
}
is CreateCredentialInterruptedException -> {
// Retry-able error. Consider retrying the call.
}
is CreateCredentialProviderConfigurationException -> {
// Your app is missing the provider configuration dependency.
// Most likely, you're missing the
// "credentials-play-services-auth" module.
}
is CreateCredentialCustomException -> {
// You have encountered an error from a 3rd-party SDK. If you
// make the API call with a request object that's a subclass of
// CreateCustomCredentialRequest using a 3rd-party SDK, then you
// should check for any custom exception type constants within
// that SDK to match with e.type. Otherwise, drop or log the
// exception.
}
else -> Log.w(TAG, "Unexpected exception type ${e::class.java.name}")
}
}
অ্যাপ সার্ভারে পাবলিক কী যাচাই করে সংরক্ষণ করুন।
অ্যাপ সার্ভারে, আপনাকে অবশ্যই পাবলিক কী ক্রেডেনশিয়াল যাচাই করতে হবে এবং তারপর পাবলিক কী-টি সংরক্ষণ করতে হবে ।
পাবলিক কী ক্রেডেনশিয়ালের উৎস যাচাই করতে, অনুমোদিত অ্যাপের অনুমতি তালিকার সাথে এটি তুলনা করুন। যদি কোনো কী-এর উৎস অচেনা হয়, তবে তা প্রত্যাখ্যান করুন।
অ্যাপটির SHA 256 ফিঙ্গারপ্রিন্ট পেতে:
টার্মিনালে নিম্নলিখিত কমান্ডটি চালিয়ে আপনার রিলিজ অ্যাপের সাইনিং সার্টিফিকেটটি প্রিন্ট করুন:
keytool -list -keystore <path-to-apk-signing-keystore>উত্তরে, স্বাক্ষরকারী সার্টিফিকেটের SHA 256 ফিঙ্গারপ্রিন্টটি শনাক্ত করুন, যা
Certificate fingerprints block:SHA256' হিসাবে উল্লেখ করা আছে।SHA256 ফিঙ্গারপ্রিন্টটি base64url এনকোডিং দিয়ে এনকোড করুন। এই পাইথন উদাহরণটি দেখায় কিভাবে ফিঙ্গারপ্রিন্টটি সঠিকভাবে এনকোড করতে হয়:
import binascii import base64 fingerprint = '<SHA256 finerprint>' # your app's SHA256 fingerprint print(base64.urlsafe_b64encode(binascii.a2b_hex(fingerprint.replace(':', ''))).decode('utf8').replace('=', ''))পূর্ববর্তী ধাপের আউটপুটের শুরুতে
android:apk-key-hash: যুক্ত করুন, যাতে আপনি নিম্নলিখিতের মতো কিছু পান:android:apk-key-hash:<encoded SHA 256 fingerprint>ফলাফলটি আপনার অ্যাপ সার্ভারে একটি অনুমোদিত অরিজিনের সাথে মিলতে হবে। যদি আপনার একাধিক সাইনিং সার্টিফিকেট থাকে, যেমন ডিবাগিং এবং রিলিজের জন্য সার্টিফিকেট, অথবা একাধিক অ্যাপ থাকে, তাহলে প্রক্রিয়াটি পুনরাবৃত্তি করুন এবং অ্যাপ সার্ভারে সমস্ত অরিজিনকে বৈধ হিসাবে গ্রহণ করুন।
ব্যবহারকারীকে অবহিত করুন
পাসকি সফলভাবে তৈরি হয়ে গেলে, আপনার ব্যবহারকারীদের পাসকি সম্পর্কে অবহিত করুন এবং তাদের জানান যে তারা তাদের ক্রেডেনশিয়াল প্রোভাইডার অ্যাপ থেকে অথবা অ্যাপের সেটিংস থেকে তাদের পাসকি পরিচালনা করতে পারবেন। একটি কাস্টম ডায়ালগ, নোটিফিকেশন বা স্নাকবার ব্যবহার করে ব্যবহারকারীদের অবহিত করুন। যেহেতু কোনো ক্ষতিকারক সত্তা দ্বারা অপ্রত্যাশিতভাবে পাসকি তৈরি হলে তাৎক্ষণিক নিরাপত্তা সতর্কতা প্রয়োজন, তাই এই অ্যাপ-মধ্যস্থ পদ্ধতিগুলোর পাশাপাশি ইমেলের মতো বাহ্যিক যোগাযোগের ব্যবস্থা করার কথা বিবেচনা করুন।
ব্যবহারকারীর অভিজ্ঞতা উন্নত করুন
ক্রেডেনশিয়াল ম্যানেজার ব্যবহার করে সাইন আপ বাস্তবায়নের সময় ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে, ক্রেডেনশিয়াল পুনরুদ্ধার এবং অটোফিল ডায়ালগ বন্ধ করার কার্যকারিতা যোগ করার কথা বিবেচনা করুন।
নতুন ডিভাইসে ক্রেডেনশিয়াল পুনরুদ্ধার করার কার্যকারিতা যোগ করুন
ব্যবহারকারীরা যাতে নতুন ডিভাইসে নির্বিঘ্নে তাদের অ্যাকাউন্টে লগ ইন করতে পারেন, সেজন্য ‘রিস্টোর ক্রেডেনশিয়ালস’ কার্যকারিতাটি প্রয়োগ করুন। BackupAgent সাথে রিস্টোর ক্রেডেনশিয়ালস যোগ করলে, ব্যবহারকারীরা নতুন ডিভাইসে আপনার রিস্টোর করা অ্যাপটি খুললেই লগ ইন করতে পারেন, ফলে তারা সাথে সাথেই আপনার অ্যাপটি ব্যবহার করতে পারেন।
পরিচয়পত্র ক্ষেত্রগুলিতে স্বয়ংক্রিয় পূরণ বন্ধ করুন (ঐচ্ছিক)
অ্যাপের যে স্ক্রিনগুলিতে ব্যবহারকারীদের প্রমাণীকরণের জন্য ক্রেডেনশিয়াল ম্যানেজারের বটম শীট UI ব্যবহার করার কথা, সেগুলির ইউজারনেম এবং পাসওয়ার্ড ফিল্ডে isCredential অ্যাট্রিবিউটটি যোগ করুন। এর ফলে অটোফিল ডায়ালগগুলি ( FillDialog এবং SaveDialog ) ক্রেডেনশিয়াল ম্যানেজারের বটম শীট UI-এর উপর ওভারল্যাপ করা থেকে বিরত থাকে।
isCredential অ্যাট্রিবিউটটি অ্যান্ড্রয়েড ১৪ এবং এর পরবর্তী সংস্করণগুলোতে সমর্থিত।
নিম্নলিখিত উদাহরণটি দেখায় যে কীভাবে আপনি আপনার অ্যাপের প্রাসঙ্গিক ভিউগুলির সংশ্লিষ্ট ইউজারনেম এবং পাসওয়ার্ড ফিল্ডগুলিতে isCredential অ্যাট্রিবিউটটি যোগ করতে পারেন:
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:isCredential="true" />