如何以编程方式锁定活动操作

时间:2014-07-18 05:51:45

标签: android android-activity

如果用户在AlertDialog中点击“是”,则要锁定活动操作,但单击“是”时似乎没有任何操作。

我正在关注this解决方案

AlertDialog.Builder alertDialog = new AlertDialog.Builder(AlertDialogActivity.this);

        // Setting Dialog Title
        alertDialog.setTitle("Confirm Delete...");

        // Setting Dialog Message
        alertDialog.setMessage("Are you sure you want delete this?");

        // Setting Icon to Dialog
        alertDialog.setIcon(R.drawable.delete);

        // Setting Positive "Yes" Button
        alertDialog.setPositiveButton("YES", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog,int which) {

           PackageManager pm = getPackageManager(); 
                    pm.setComponentEnabledSetting(new ComponentName(getApplicationContext(), com.example.lock.MainActivity.class),
                                                  PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
            }
        });

        // Setting Negative "NO" Button
        alertDialog.setNegativeButton("NO", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
            // Write your code here to invoke NO event
            dialog.cancel();
            }
        });

        // Showing Alert Message
        alertDialog.show();

4 个答案:

答案 0 :(得分:0)

使用它。它有效:)

  

`   尝试使用此标志在活动开始时禁用锁定屏幕。

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

答案 1 :(得分:0)

实际上,我认为这是不可能的。当然,您可以覆盖Activity的onBackPressed方法,以便用户无法导航回来。您还可以设置FullScreenMode以隐藏用户的状态栏。但是,很难拦截Home键。它是由Android设计的,因此用户将始终可以访问HomeScreen。

所以一般来说,我建议使用ProgressDialog(http://developer.android.com/reference/android/app/ProgressDialog.html),你甚至可以使用setCancelable(false)来防止它被" Back"解雇。但Home仍将最小化您的应用并转到主屏幕。

答案 2 :(得分:0)

似乎创建新组件可能会导致问题。 在对话框中获取上下文可能与您的想法不同。

请点击此链接Hide application icon。或者编辑获取上下文的代码。

private static final ComponentName LAUNCHER_COMPONENT_NAME = new ComponentName("your.package.name", "your.package.name.Launcher");

...

getPackageManager().setComponentEnabledSetting(LAUNCHER_COMPONENT_NAME,
                PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                PackageManager.DONT_KILL_APP);

答案 3 :(得分:-1)

而不是让getApplicationContext()获取当前类的上下文而不是ClassName.this