Rexsee API介绍:Android屏幕锁定,Keyguard函数与扩展源码
16lz
2022-06-06
Android锁屏时会先调用onPause();解锁时调用onResume,读入保存的应用程序的资源。如果运行程序时已经锁屏,应用程序会先调用onCreate(),然后onResume(),再则onPause()。
取消锁屏:
如下是rexseeKeyguard.java源码:
取消锁屏:
<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/
更多相关文章
- Android(安卓)对话框(Dialog)大全 建立你自己的对话框
- 文章分享:Android四大组件详解
- 用Eclipse开发android原码
- WiFi流程
- Android(安卓)App调用跳转百度地图、高德地图、腾讯地图进行目的
- 如何下载并编译Android4.0内核源码goldfish(图文)
- Android(安卓)集成百度地图实现设备定位
- Android系统源码阅读(18):Android(安卓)应用的显示
- Android调用JNI出错 java.lang.UnsatisfiedLinkError: No implem