Phonegap password prompt

匿名 (未验证) 提交于 2019-12-03 02:29:01

问题:

i want to make a password prompt in phonegap. any plugins or html/js snippet

i have tried

function onPrompt(results) {     alert("You selected button number " + results.buttonIndex + " and entered " + results.input1); }  // Show a custom prompt dialog // function showPrompt() {     navigator.notification.prompt(         'Please enter your name',  // message         onPrompt,                  // callback to invoke         'Registration',            // title         ['Ok','Exit']              // buttonLabels     ); } 

but it doesnt have any option for password

回答1:

You need to look at the native code to display password promt. As I never need a "normal prompt", I have changed the code in the phonegap plugins for iOS and android but I am sure there is a better way to do it.

for iOS in Plugins/CDVNotification.m

   - (void)showDialogWithMessage:(NSString*)message title:(NSString*)title buttons:(NSArray*)buttons defaultText:(NSString*)defaultText callbackId:(NSString*)callbackId dialogType:(NSString*)dialogType {  CDVAlertView* alertView = [[CDVAlertView alloc]     initWithTitle:title               message:message              delegate:self     cancelButtonTitle:nil     otherButtonTitles:nil];  alertView.callback  Id = callbackId;      int count = [buttons count];      for (int n = 0; n < count; n++) {         [alertView addButtonWithTitle:[buttons objectAtIndex:n]];     }      if ([dialogType isEqualToString:DIALOG_TYPE_PROMPT]) {         alertView.alertViewStyle = UIAlertViewStyleSecureTextInput; /*this is what you need*/         UITextField* textField = [alertView textFieldAtIndex:0];         textField.text = defaultText;     }      [alertView show]; } 

and for android in src/org/apache/cordova/dialogs/notification.java

public synchronized void prompt(final String message, final String title, final JSONArray buttonLabels, final String defaultText, final CallbackContext callbackContext) {          final CordovaInterface cordova = this.cordova;         final EditText promptInput =  new EditText(cordova.getActivity());         promptInput.setHint(defaultText);         promptInput.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); ... 


回答2:

You just need to add one line in

App Name\platforms\android\src\org\apache\cordova\dialogs\Notification.java

promptInput.setInputType(0x00000081); 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!