如何锁定Android设备的屏幕

前端之家收集整理的这篇文章主要介绍了如何锁定Android设备的屏幕前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_301_0@
我想在我的应用程序中实现屏幕锁定功能,但目前我无法让它工作.我有一个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",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();
    }


}

在Manifest中添加

<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" />

更新:

screenbrightness的值介于0和1之间.如果该值设置为负数,则将其设置为默认屏幕亮度.通过将亮度更改为0,亮度将足够低,屏幕将自动关闭.

WindowManager.LayoutParams params = getWindow().getAttributes();
params.screenBrightness = 0;
getWindow().setAttributes(params);

Thisthis可能会对您有所帮助.

更新2:

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

http://rdcworld-android.blogspot.in/2012/03/lock-phone-screen-programmtically.html

http://developer.android.com/guide/topics/admin/device-admin.html#lock

猜你在找的Android相关文章