Android锁屏时会先调用onPause();解锁时调用onResume,读入保存的应用程序的资源。如果运行程序时已经锁屏,应用程序会先调用onCreate(),然后onResume(),再则onPause()。
取消锁屏:
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
KeyguardManager mKeyGuardManager = (KeyguardManager)getSystemService(KEYGUARD_SERVICE);
KeyguardLock mLock = mKeyGuardManager.newKeyguardLock("自己Activity名字");
mLock.disableKeyguard();
也是相当的简单了,但基于Rexsee的API,可以通过一句话搞定。
1. 取消锁屏:window.setTimeout('rexseeKeyguard.disable();alert(\'自动解锁!\');',10000);
alert('请按电源键关屏再开屏看到锁屏画面,10秒后自动解锁。')
2. 启动锁屏:rexseeKeyguard.reEnable();
如下是rexseeKeyguard.java源码:
/*
* Copyright (C) 2011 The Rexsee Open Source Project
*
* Licensed under the Rexsee License, Version 1.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.rexsee.com/CN/legal/license.html
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package rexsee.core.alarm;
import rexsee.core.browser.JavascriptInterface;
import rexsee.core.browser.RexseeBrowser;
import android.app.KeyguardManager;
import android.app.KeyguardManager.KeyguardLock;
import android.content.Context;
public class RexseeKeyguard implements JavascriptInterface {
private static final String INTERFACE_NAME = "Keyguard";
@Override
public String getInterfaceName() {
return mBrowser.application.resources.prefix + INTERFACE_NAME;
}
@Override
public JavascriptInterface getInheritInterface(RexseeBrowser childBrowser) {
return this;
}
@Override
public JavascriptInterface getNewInterface(RexseeBrowser childBrowser) {
return new RexseeKeyguard(childBrowser);
}
private final Context mContext;
private final RexseeBrowser mBrowser;
private KeyguardLock mKeyguardLock = null;
public RexseeKeyguard(RexseeBrowser browser) {
mBrowser = browser;
mContext = browser.getContext();
}
public RexseeKeyguard(Context context) {
mBrowser = null;
mContext = context;
}
//JavaScript Interface
public void enable() {
/*
try {
DevicePolicyManager dpm = (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
dpm.lockNow();
} catch (Exception e) {
mBrowser.exception(getInterfaceName(), e);
}
*/
}
public void reEnable() {
if (mKeyguardLock != null) {
mKeyguardLock.reenableKeyguard();
mKeyguardLock = null;
}
}
public void disable() {
KeyguardManager keyguardManager = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE);
mKeyguardLock = keyguardManager.newKeyguardLock("");
mKeyguardLock.disableKeyguard();
}
}
仅对Rexsee的源码和函数事件做了整理,相关的demo或源码解析可以在Rexsee社区了解,目前Rexsee已提供了近2000个扩展,覆盖Android原生功能超过90%,且全部开放: http://www.rexsee.com/
来源:oschina
链接:https://my.oschina.net/u/194999/blog/49455