简体   繁体   中英

Password Prompt Comes Only first time

I want when user click on Uninstall Button,there prompt a password dialog. This Dialog is coming only one time.I'm using this code:

public void run() {

        Looper.prepare();

        while (!exit) {

            // get the info from the currently running task
            List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(MAX_PRIORITY);
            String activityName = taskInfo.get(0).topActivity.getClassName();
            Log.d("topActivity", "CURRENT Activity ::" + activityName);

            if (activityName.equals("com.android.packageinstaller.UninstallerActivity")) {
                //Toast.makeText(context, "Uninstall Clicked", Toast.LENGTH_LONG).show();
                Intent startIntent = new Intent(this.context, Alert_Dialog.class);
                startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
               this.context.startActivity(startIntent);
                exit = true;
            } else if (activityName.equals("com.android.settings.ManageApplications")) {
                Toast.makeText(this.context, "Back", Toast.LENGTH_LONG).show();
                exit = true;
            }
        }
        Looper.loop();
    }//Run

I want whenever user click on Unistall Prompt should come , below is the code in onClick,

final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);   alertDialogBuilder.setView(promptsView);
        final EditText userInput = (EditText) promptsView.findViewById(R.id.edit_text);

        alertDialogBuilder
                .setCancelable(false)
                .setNegativeButton("OK",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,int id) {
                                /** DO THE METHOD HERE WHEN PROCEED IS CLICKED*/
                                String user_text = (userInput.getText()).toString();
                                /** CHECK FOR USER'S INPUT **/
                                if (user_text.equals("abc"))
                                {
                                    Log.d(user_text, "HELLO THIS IS THE MESSAGE CAUGHT :)");
                                    Toast.makeText(myContext,"PAssword Correct",Toast.LENGTH_LONG).show();
                                    Alert_Dialog.this.finish();
                                    //Search_Tips(user_text);

                                }
                                else{
                                    Log.d(user_text,"string is empty");
                                    String message = "The password you have entered is incorrect." + " \n \n" + "Please try again!";
                                    AlertDialog.Builder builder = new AlertDialog.Builder(myContext);
                                    builder.setTitle("Error");
                                    builder.setMessage(message);
                                    builder.setPositiveButton("Cancel", null);
                                    builder.create().show();
                                    Alert_Dialog.this.finish();

                                }
                            }
                        });
//                .setPositiveButton("Cancel",
//                        new DialogInterface.OnClickListener() {
//                            public void onClick(DialogInterface dialog,int id) {
//                                Alert_Dialog.this.finish();
//
//                            }
//
//                        }
//                );
        AlertDialog alert = alertDialogBuilder.create();
        alert.show();
    }

Once the dialog calls dismiss() , the view you set for the dialog also would be destroyed.

In your case, this line set the view,

alertDialogBuilder.setView(promptsView);

But when the dialog is closed, the view promptsView is destroyed,

The promptsView should be re-created once again you use it.

final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
promptsView = new PromptsView();//new or inflate the view
//....
alertDialogBuilder.setView(promptsView);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM