如何锁定android设备的屏幕

如何锁定android设备的屏幕,android,Android,我想在我的应用程序中实现屏幕锁定功能,但目前我无法让它工作。我有一个alertDialog,它将通过使用几个按钮请求用户输入。如果用户按“否”,我想锁定屏幕(无限期,而不是在设定的时间内)。以编程方式锁定屏幕的最佳方式是什么?我尝试过使用以下方法,但是,尽管我的对话框被取消,但屏幕从未锁定 KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);

我想在我的应用程序中实现屏幕锁定功能,但目前我无法让它工作。我有一个alertDialog,它将通过使用几个按钮请求用户输入。如果用户按“否”,我想锁定屏幕(无限期,而不是在设定的时间内)。以编程方式锁定屏幕的最佳方式是什么?我尝试过使用以下方法,但是,尽管我的对话框被取消,但屏幕从未锁定

KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE); 
                        KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
                        lock.reenableKeyguard();
MyCode

import android.app.Activity;
import android.app.AlertDialog;
import android.app.KeyguardManager;
import android.app.KeyguardManager.KeyguardLock;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Window;

public class MyApp extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        this.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);


        startDialog();
    }



    private void startDialog() {

        AlertDialog.Builder myAlertDialog = new AlertDialog.Builder(this);

        myAlertDialog.setMessage("Do you want to exit the application?");
        myAlertDialog.setPositiveButton("Yes",
                new DialogInterface.OnClickListener() {

                    // do something when the button is clicked
                    public void onClick(DialogInterface arg0, int arg1) {
                        System.out.println("...yes button is clicked..");
                        arg0.dismiss();

                    }
                });

        myAlertDialog.setNegativeButton("NO",
                new DialogInterface.OnClickListener() {

                    // do something when the button is clicked
                    public void onClick(DialogInterface arg0, int arg1) {
                        System.out.println("...clicked no...");
                        arg0.dismiss();
                        KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE); 
                        KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
                        lock.reenableKeyguard();

                    }
                });
        AlertDialog alert = myAlertDialog.create();
        myAlertDialog.setCancelable(false);
        alert.setCancelable(false);
        alert.getWindow().setLayout(600, 400);

        myAlertDialog.show();
    }


}
在清单中添加

<uses-permission android:name="android.permission.DISABLE_KEYGUARD"></uses-permission>


有人知道我做错了什么吗?

有两种方法可以锁定屏幕:

PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE);

// Choice 1
manager.goToSleep(int amountOfTime);

// Choice 2
PowerManager.WakeLock wl = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Your Tag");
wl.acquire();
wl.release();
需要此权限:

<uses-permission android:name="android.permission.WAKE_LOCK" />
也许能帮你更进一步

更新2:

以下是一些用于锁定屏幕的方法的链接:

PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE);

// Choice 1
manager.goToSleep(int amountOfTime);

// Choice 2
PowerManager.WakeLock wl = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Your Tag");
wl.acquire();
wl.release();


试着像这样覆盖它:

 @Override
 protected void onResume() {
    // TODO Auto-generated method stub
    WindowManager.LayoutParams params = getWindow().getAttributes();
    params.screenBrightness = 1;
    getWindow().setAttributes(params);
    super.onResume();
}

它确实对我有帮助:D

我花了整整一天的时间来决定是将屏幕亮度改为0,还是自行锁上

这就是所有使用策略的目的!看起来有点像这样

<?xml version="1.0" encoding="UTF-8"?>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <uses-policies>

        <force-lock />
    </uses-policies>

</device-admin>


可能与@Matt Ball重复。我已经把我的全部源代码。你可以查一下。我尝试过这种方法,但没有成功。我尝试了第二种方法,但第一种方法没有成功。我不知道我必须设置什么权限。我使用了更新的代码,但问题是每次屏幕锁定时,当我解锁屏幕时,它会再次锁定。用户询问如何锁定屏幕,不知道如何降低屏幕的粗大度。选项1不起作用,因为它需要权限设备电源。选择2什么都不做。@A.Abiri,这对我也不起作用。你能看一下这个吗。