प्रोग्रामेटिक रूप से PASSWORD से NORMAL और इसके विपरीत EditText के इनपुट प्रकार को बदलें


191

मेरे आवेदन में, मेरे पास एक EditTextडिफ़ॉल्ट इनपुट प्रकार है android:inputType="textPassword"जो बहल द्वारा निर्धारित किया गया है। इसके पास CheckBoxइसका अधिकार है, जिसे जाँचने पर, उस EditText के इनपुट प्रकार को NORMAL PLAIN TEXT में बदल देता है। उसके लिए कोड है

password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

मेरी समस्या यह है कि जब चेकबॉक्स अनियंत्रित होता है तो उसे फिर से इनपुट प्रकार PASSWORD पर सेट करना चाहिए। मैंने इसका उपयोग किया है-

password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);

लेकिन, उस एडिट टेक्स्ट के अंदर का टेक्स्ट अभी भी दिखाई देता है। और आश्चर्य की बात है, जब मैं ओरिनेटेशन को बदलता हूं, तो यह स्वचालित रूप से इनपुट प्रकार PASSWORD पर सेट हो जाता है और अंदर का टेक्स्ट बुलेट हो जाता है (पासवर्ड की तरह दिखाया जाता है)।

इसे प्राप्त करने का कोई तरीका?


टेक्स्ट मेल संपादित करने के लिए ईमेल प्रकार सेट करने के लिए कैसे करें। EDT.setInputType (InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS); काम नहीं लगता।
महेंद्रन

5
का उपयोग करें mailEdt.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);। मेरे लिये कार्य करता है।
राजकिरण

जवाबों:


346

बस उन लोगों के लिए जो एक ही समस्या है। बस उस EditText को प्रोग्रामेटिक रूप से एक अतिरिक्त विशेषता जोड़ें और आप कर रहे हैं।

password.setInputType(InputType.TYPE_CLASS_TEXT |
    InputType.TYPE_TEXT_VARIATION_PASSWORD);

संख्यात्मक पासवर्ड (पिन) के लिए।

password.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);

इसके अलावा, सुनिश्चित करें कि एडिट टेक्स्ट में टेक्स्ट के अंत में कर्सर है। क्योंकि, जब आप इनपुट प्रकार बदलते हैं, तो कर्सर स्वचालित रूप से शुरुआती बिंदु पर सेट हो जाएगा। इसलिए मैं निम्नलिखित कोड का उपयोग करने का सुझाव देता हूं:

et_password.setInputType(InputType.TYPE_CLASS_TEXT | 
    InputType.TYPE_TEXT_VARIATION_PASSWORD);
et_password.setSelection(et_password.getText().length());

डेटा बाइंडिंग का उपयोग करते समय, आप निम्न कोड का उपयोग कर सकते हैं

<data>
        <import type="android.text.InputType"/>
.
.
.
<EditText
android:inputType='@{someViewModel.isMasked ? 
(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD) :
InputType.TYPE_CLASS_TEXT }'

यदि कोटलिन का उपयोग कर रहे हैं,

password.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD

2
जैसा कि सही उत्तर के लिए नोट किया गया है - चयन के बदले आप उपयोग कर सकते हैंInputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
mente

17
मुझे समझ नहीं आ रहा है कि दुनिया में एंड्रॉइड कर्सर को स्थानांतरित करने का विकल्प क्यों चुनता है, यह सिर्फ डेवलपर्स के जीवन को अधिक कठिन बनाता है।
राफेल सैशे


2
यदि उपयोगकर्ता पासवर्ड फ़ील्ड के मध्य को संपादित कर रहा है, तो यह लगातार कर्सर को अंत में रखेगा। मैं का उपयोग कर की सलाह देते हैं editText.getSelectionStart()और editText.getSelectionEnd()साथ setSelection(start, end)इस समस्या से बचने के लिए।
जेएम लॉर्ड

1
लोगों को और भी नीचे नहीं देखना चाहिए। यह सबसे अच्छा जवाब है और यह सुझाव देगा कि आप @JM लॉर्ड के सुझाए गए बदलाव को करें।
मार्क

56

पासवर्ड को टेक्स्ट में बदलने के लिए और इसके विपरीत इस कोड का उपयोग करें

mCbShowPwd.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // checkbox status is changed from uncheck to checked.
                if (!isChecked) {
                        // hide password
                    mEtPwd.setTransformationMethod(PasswordTransformationMethod.getInstance());
                } else {
                        // show password
                    mEtPwd.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
                }
            }
        });

पूर्ण नमूना कोड के लिए http://www.codeproject.com/Tips/518641/Show-hide-password-in-a-edit-text-view-password-ty


6
HideReturnsTransformationMethod.getInstance () पासवर्ड दिखाया, और PasswordTransformationMethod.getInstance () पासवर्ड छिपाएं ... कार्यान्वयन सही है लेकिन टिप्पणियां उलट हैं
अहमद अदेल इस्माइल

2
यह सबसे अच्छा उत्तर है, इसे पूरा करने के लिए, बस कर्सर को अंतिम वर्ण पर ले जाएँ: txtpassword.setSelection (txtpassword.getText ()। Length ());
जोश

एक पल के लिए ऐसा लगता है कि EL-conte De-monte TereBentikh द्वारा इंगित बिंदु के कारण काम नहीं कर रहा है। जोश सुझाव भी सहायक है। यह सबसे अच्छा जवाब है।
अजय

सरल और सबसे अच्छा thnks
सैम

1
आप प्रोफेसर मेरे दोस्त हैं! इस समाधान के साथ आप पासवर्ड मोड (सुरक्षित पाठ) में वापस बदलने के बाद फ़ॉन्ट के साथ समस्याओं का सामना नहीं कर रहे हैं।
टेज़ेनोसोस

16
password.setInputType(InputType.TYPE_CLASS_TEXT | inputType.TYPE_TEXT_VARIATION_PASSWORD);

ऊपर दिया गया तरीका मेरे लिए वास्तव में कारगर नहीं था। नीचे दिए गए उत्तर के लिए काम करता है 2.2 sdk।

password.setTransformationMethod (PasswordTransformationMethod.getInstance ());

एक EditText के लिए इनपुट टाइप सेट करें?


12

कम कोड के साथ दृश्यता को टॉगल करने के लिए ImageView का उपयोग कर एक और सरल उदाहरण , सिंगल इनपुट टाइप के कारण हमें केवल समानता ऑपरेटर की आवश्यकता होती है:

EditText inputPassword = (EditText) findViewById(R.id.loginPassword);
ImageView inputPasswordShow = (ImageView) findViewById(R.id.imagePasswordShow);
inputPasswordShow.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
         if(inputPassword.getInputType() == InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD) {
              inputPassword.setInputType( InputType.TYPE_CLASS_TEXT |
                                        InputType.TYPE_TEXT_VARIATION_PASSWORD);
         }else {
              inputPassword.setInputType( InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD );
         }
         inputPassword.setSelection(inputPassword.getText().length());
    }
});

जगह:

InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD

साथ में :

InputType.TYPE_CLASS_TEXT

एक ही परिणाम देगा लेकिन कम शब्द।


12
Checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // checkbox status is checked.
                if (isChecked) {
                        //password is visible
 PasswordField.setTransformationMethod(HideReturnsTransformationMethod.getInstance());     
                } else {
                        //password gets hided
             passwordField.setTransformationMethod(PasswordTransformationMethod.getInstance());       
                }
            }
        });

6

यह मेरे लिए काम किया:

mytext.setInputType(InputType.TYPE_CLASS_NUMBER);

कृपया प्रश्न पहले पढ़ें। मैं पासवर्ड फील्ड और टेक्स्टफील्ड के बीच टॉगल करना चाहता हूं। यह मुझे न्यूमेरिक टेक्स्टफील्ड देगा।
राजकिरण

6

ठीक है, तो घंटों की कोशिश के बाद आखिरकार इसे लागू कर दिया गया। नीचे कोड है ..

  buttons.get(2).setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View view) {
       if(buttons.get(2).getText().toString().equalsIgnoreCase(getResources().getString(R.string.show))){
           editTexts.get(1).setInputType(InputType.TYPE_CLASS_TEXT);
           editTexts.get(1).setSelection(editTexts.get(1).getText().length());
           buttons.get(2).setText(getResources().getString(R.string.hide));
        }else{
           editTexts.get(1).setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_PASSWORD);
           //editTexts.get(1).setTransformationMethod(PasswordTransformationMethod.getInstance());
           editTexts.get(1).setSelection(editTexts.get(1).getText().length());
           buttons.get(2).setText(getResources().getString(R.string.show));
       }

    }
});

स्पष्टीकरण: - मेरे पास शो के रूप में डिफ़ॉल्ट पाठ के साथ एक बटन है। बटन के पाठ को दिखाने के लिए जाँच करने पर उस पर ऑनक्लिक घटना के बाद। यदि यह दिखा है तो इनपुट प्रकार को बदलना, कर्सर की स्थिति को समायोजित करना और इसमें छिपे हुए के रूप में नया पाठ सेट करना।

जब यह छिपा है ... रिवर्स कर रहा है यानी पासवर्ड छिपा रहा है, कर्सर को एडजस्ट करना और टेक्स्ट को शो के रूप में सेट करना है। और बस। यह एक आकर्षण की तरह काम कर रहा है।



5

पासवर्ड को टेक्स्ट में बदलने के लिए और इसके विपरीत इस कोड का उपयोग करें। इस कोड ने मेरे लिए पूरी तरह से काम किया। इसे इस्तेमाल करे..

EditText paswrd=(EditText)view.findViewById(R.id.paswrd);

CheckBox showpass=(CheckBox)view.findViewById(R.id.showpass);
showpass.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
    if(((CheckBox)v).isChecked()){
        paswrd.setInputType(InputType.TYPE_CLASS_TEXT);

    }else{
        paswrd.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_PASSWORD);
    }

}
});

यह स्वीकृत उत्तर से कैसे भिन्न है? स्पैमिंग से पहले कृपया प्रश्न और उत्तर को ध्यान से पढ़ें।
राजकिरण

3

यह पासवर्ड / बटन को पासवर्ड दिखाने / छिपाने के लिए पूर्ण onClick हैंडलर है।

    new OnClickListener() {
        @Override
        public void onClick(View v) {
            // current ursor position
            int cursorPosition = edtPassword.getSelectionStart();

            // toggles the control variable
            isPassworsVisible = !isPassworsVisible;

            // sets the image toggler inside edit text
            passwordVisible.setImageDrawable(getResources().getDrawable(isPassworsVisible ? R.drawable.ic_eye_checked : R.drawable.ic_eye_unchecked));

            // apply input type
            edtPassword.setInputType(isPassworsVisible ? InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD : InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);

            // returns cursor to position
            edtPassword.setSelection(cursorPosition);
        }
    };

के लिए धन्यवाद edtPassword.getSelectionStart()
कूलमाइंड

3

पासवर्ड विजिबिलिटी टॉगल फीचर को लाइब्रेरी वर्जन 24.2.0 के सपोर्ट में जोड़ा गया है, जिससे आप EditTextबिना जरूरत के ही सीधे पासवर्ड को टॉगल कर सकते हैं CheckBox

आप मूल रूप से अपने सपोर्ट लाइब्रेरी वर्जन को 24.2.0 तक अपडेट करके और फिर inputTypeपासवर्ड सेट करके उस काम को मूल रूप से कर सकते हैं TextInputEditText। यहाँ है कि कैसे करना है:

<android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.design.widget.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/password"
            android:inputType="textPassword"/>
</android.support.design.widget.TextInputLayout>

आप TextInputLayout के लिए डेवलपर प्रलेखन पर नई सुविधा के बारे में अधिक जानकारी प्राप्त कर सकते हैं ।


3

समर्थन पुस्तकालय v24.2.0 के बाद से। आप यह बहुत आसान हासिल कर सकते हैं

आपको क्या करने की ज़रूरत है:

  1. डिज़ाइन लाइब्रेरी को अपने आश्रितों में जोड़ें

    dependencies {
         compile "com.android.support:design:25.1.0"
    }
  2. TextInputEditTextके साथ संयोजन में उपयोग करेंTextInputLayout

    <android.support.design.widget.TextInputLayout
        android:id="@+id/etPasswordLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:passwordToggleEnabled="true">
    
        <android.support.design.widget.TextInputEditText
            android:id="@+id/etPassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/password_hint"
            android:inputType="textPassword"/>
    </android.support.design.widget.TextInputLayout>

passwordToggleEnabled विशेषता पासवर्ड टॉगल दिखाई देगा

  1. अपने रूट लेआउट में जोड़ना न भूलें xmlns:app="http://schemas.android.com/apk/res-auto"

  2. आप का उपयोग करके अपने पासवर्ड टॉगल अनुकूलित कर सकते हैं:

app:passwordToggleDrawable- पासवर्ड इनपुट दृश्यता टॉगल आइकन के रूप में उपयोग करने योग्य।
app:passwordToggleTint- पासवर्ड इनपुट दृश्यता टॉगल के लिए उपयोग करने के लिए आइकन।
app:passwordToggleTintMode- सम्मिश्रण मोड का उपयोग पृष्ठभूमि टिंट को लागू करने के लिए किया जाता है।

TextInputLayout प्रलेखन में अधिक जानकारी । यहां छवि विवरण दर्ज करें


2

विज़ुअल स्टूडियो / ज़मारिन के लिए इसी तरह के समाधान के लिए मेरी खोज मुझे इस धागे तक ले जाती है। नीचे Xamarin के साथ मेरे लिए क्या काम किया गया है। ध्यान दें कि यह कार्यान्वयन TYPE_TEXT_FLAG_NO_SUGGESTIONSमोड के बीच स्विच करते समय ध्वज को बरकरार रखता है ।

EditText et = FindViewById<EditText>(Resource.Id.ET);

वर्ण दिखाने के लिए: et.InputType = Android.Text.InputTypes.TextVariationVisiblePassword | Android.Text.InputTypes.TextFlagNoSuggestions;

वर्ण छिपाने के लिए: et.InputType = Android.Text.InputTypes.TextVariationPassword | Android.Text.InputTypes.ClassText;

स्थिति को समाप्त करने के लिए सेट करें: int position = et.Text.Length; et.SetSelection(position, position);


if (edittext.getInputType() == (InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD )){ edittext.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD ); }else{ edittext.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD ); }Visual Studio / Xamarin के लिए इस कोड का उपयोग कैसे करें ..?
सुनील y

मेरा मतलब है कि कैसे () स्थिति में Edittext के इनपुट टाइप को प्राप्त करने के लिए ..?
सुनील y

2

कुछ गतिशील स्थिति holder.edit_pin.setInputType(InputType.TYPE_CLASS_NUMBER);इतनी बेहतर उपयोग नहीं करेगी कि दोनों की तरह

holder.edit_pin.setInputType(InputType.TYPE_CLASS_NUMBER);
holder.edit_pin.setTransformationMethod(PasswordTransformationMethod.getInstance());

नोट: यह तब उपयुक्त है जब आप डायनेमिक नियंत्रणों का उपयोग कर रहे हों, जैसे कि अरेयाकैप्टर का उपयोग करना


2

आप बाद setInputTypeमें पासवर्ड फ़ील्ड के लिए, आप होगा समस्या से फ़ॉन्ट
यहाँ फॉन्ट समस्या के बिना दिखाएँ / छिपाएँ पासवर्ड के लिए मेरे समाधान है

protected void onCreate(Bundle savedInstanceState) {
    ...
    findViewById(R.id.button_show_hide_password).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (isPasswordVisible(edtPassword)) {
                enableInputHiddenPassword(edtPassword);
            } else {
                enableInputVisiblePassword(edtPassword);
            }
            edtPassword.setSelection(edtPassword.getText().length());
        }
    });
}

final int INPUT_TYPE_VISIBLE_PASSWORD = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD;
final int INPUT_TYPE_HIDDEN_PASSWORD = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD;

private boolean isPasswordVisible(EditText editText) {
    return editText.getInputType() == INPUT_TYPE_VISIBLE_PASSWORD;
}

private void enableInputVisiblePassword(EditText editText) {
    Typeface cache = editText.getTypeface();
    editText.setInputType(INPUT_TYPE_VISIBLE_PASSWORD);
    editText.setTypeface(cache);
}

private void enableInputHiddenPassword(EditText editText) {
    Typeface cache = editText.getTypeface();
    editText.setInputType(INPUT_TYPE_HIDDEN_PASSWORD);
    editText.setTypeface(cache);
}

नोट: मैं InputType.TYPE_TEXT_VARIATION_PASSWORDइसके बजाय InputType.TYPE_CLASS_TEXTया का उपयोग करता हूं HideReturnsTransformationMethodक्योंकि मैं चाहता हूं कि कीबोर्ड टेक्स्ट और नंबर दोनों को प्रदर्शित करे

डेमो


1

मैं android:inputType="textPassword"आपके लेआउट से हटा दूंगा। यही कारण है कि जब अभिविन्यास बदलता है तो यह पासवर्ड पर वापस स्विच कर रहा है। क्योंकि हर बार ओरिएंटेशन बदलने से व्यू रिक्रिएट किया जा रहा है।

पहली समस्या के लिए इसे आजमाएँ:

String text = password.getText();
password.setText("");
password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
password.setText(text);

इनपुट प्रकार बदलने से पहले मूल रूप से पाठ को खाली करना और फिर उसे वापस जोड़ना।


काम नहीं कर रहा। मैंने भी password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);इनिशियलाइज़ेशन के तुरंत बाद डालने की कोशिश की , लेकिन अफसोस!
राजकिरण

1

जब आप पासवर्ड दृश्य पाठ में पासवर्ड दृश्यता लागू करना चाहते हैं तो पूरा कोड।

एक हैंडल बनाएं [कोई भी ड्रॉबल या चेकबॉक्स]

पर क्लिक करें या जाँच / अनचेक पर यह लिखें:

 if (edittext.getInputType() == (InputType.TYPE_CLASS_TEXT |
                    InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD )){

                edittext.setInputType(InputType.TYPE_CLASS_TEXT |
                        InputType.TYPE_TEXT_VARIATION_PASSWORD );
            }else{
                edittext.setInputType(InputType.TYPE_CLASS_TEXT |
                        InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD );
            }

इस लाइन को लिखना न भूलें:

 edittext.setSelection(edittext.getText().length());

यह कर्सर को लाइन के अंत तक रीसेट करता है।


@ पीकेआर कार्यान्वयन मित्र की जांच करें, जो इस मामले में उपयोग करने के लिए तैयार है! :)
सुद

@ sud007 क्या आपके पास कोई विचार है कि ज़ामरीन / विज़ुअल स्टूडियो में यदि कोई शर्त है तो कैसे लिखें ..?
सुनील y

1

मैं अपने चेकबॉक्स पर इनपुट प्रकार बदलता हूं, इसलिए OnCheckedChangeListenerमैं अपने पर करता हूं :

passwordEdit.setInputType(InputType.TYPE_CLASS_TEXT| (isChecked? InputType.TYPE_TEXT_VARIATION_PASSWORD|~InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD : InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD));

और यह आखिरकार काम कर गया।

के साथ एक बूलियन समस्या की तरह लगता है TYPE_TEXT_VARIATION_VISIBLE_PASSWORD । झंडे को उल्टा करें और यह समस्या को ठीक कर दे।

आपके मामले में:

password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD|~InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

1

परिवर्तन विधि का उपयोग करें:

छुपाना:

editText.transformationMethod = PasswordTransformationMethod.getInstance()

दर्शनीय:

editText.transformationMethod = SingleLineTransformationMethod.getInstance()

बस।


0

@Rajkiran द्वारा प्रदान किए गए सही उत्तर पर सिर्फ एक अतिरिक्त टिप्पणी, आप जोड़ना चाह सकते हैं

etPassword.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

NORMAL इनपुट स्थिति ताकि उपयोगकर्ता कीबोर्ड के ऑटो-सुझाव से नाराज न हों


0

Blockquote

अंतिम int [] गिनती = {0};

    showandhide.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if(count[0] ==0)
            {
                password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
                count[0]++;
            }
            else {

                password.setInputType(InputType.TYPE_CLASS_TEXT |
                        InputType.TYPE_TEXT_VARIATION_PASSWORD);
                showandhide.setText("Hide");
                count[0]--;
            }

        }
    });

0

नीरज टी और एवर्टन फर्नांडिस रोसारियो के जवाब के आधार पर मैंने कोटलिन में लिखा, जहां passwordआपके लेआउट में एक एडिट टेक्स्ट की एक आईडी है।

// Show passwords' symbols.
private fun showPassword() {
    password.run {
        val cursorPosition = selectionStart
        transformationMethod = HideReturnsTransformationMethod.getInstance()
        setSelection(cursorPosition)
    }
}

// Show asterisks.
private fun hidePassword() {
    password.run {
        val cursorPosition = selectionStart
        transformationMethod = PasswordTransformationMethod.getInstance()
        setSelection(cursorPosition)
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.