android 采用windowmanager屏蔽HOME键
来源:互联网 发布:阿里云域名认证失败 编辑:程序博客网 时间:2024/05/17 04:34
这篇博客只是一个demo,记录一种思想,采用windowmanager来屏蔽home键,因为采用activity貌似行不通,后来了解了windowmanager之后才明白,记录一下。
//这里只是一个按钮,点击启动一个service
public class MainActivity extends Activity {
private Button btn_lockscrren;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_lockscrren = (Button) findViewById(R.id.btn_lockscrren);
btn_lockscrren.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent mIntent = new Intent(MainActivity.this,LockScreenService.class);
startService(mIntent);
}
});
}
}
关键代码
public class LockScreenService extends Service {
private View lockScreenView;
private Button btn_unlock;
private WindowManager mWindowManager;
private WindowManager.LayoutParams lp;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@SuppressLint("InlinedApi")
@Override
public void onCreate() {
super.onCreate();
mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
lp = new WindowManager.LayoutParams();
//设置类型
lp.type = WindowManager.LayoutParams.TYPE_PHONE;
//设置lp为竖屏显示
lp.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
//解除锁屏,如果想查看flags里面的常量是什么意思请点击右边博客链接详细说明了,http://blog.csdn.net/liuhaomatou/article/details/22899925/
lp.flags |= LayoutParams.FLAG_DISMISS_KEYGUARD;
lp.flags |= LayoutParams.FLAG_SHOW_WHEN_LOCKED;
//设置铺满全屏
lp.flags |= LayoutParams.FLAG_FULLSCREEN;
//窗口占满整个屏幕,忽略周围的装饰边框
lp.flags |= LayoutParams.FLAG_LAYOUT_IN_SCREEN;
if(VERSION.SDK_INT >= VERSION_CODES.KITKAT){
lp.flags |= LayoutParams.FLAG_TRANSLUCENT_NAVIGATION;
lp.flags |= LayoutParams.FLAG_TRANSLUCENT_STATUS;
}
//设置大小
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.MATCH_PARENT;
//设置开始位置
lp.x = 0;
lp.y = 0;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(lockScreenView == null){
lockScreenView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.layout_inflater, null);
btn_unlock = (Button) lockScreenView.findViewById(R.id.btn_unlock);
btn_unlock.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//点击解锁
mWindowManager.removeViewImmediate(lockScreenView);
}
});
}
mWindowManager.addView(lockScreenView, lp);
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
if(mWindowManager != null){
mWindowManager = null;
}
super.onDestroy();
}
}
最后附上下载链接
http://download.csdn.net/my
- android 采用windowmanager屏蔽HOME键
- Android HOME键屏蔽
- Android 屏蔽HOME键
- Android屏蔽home键
- android屏蔽home键
- Android屏蔽home键
- Android 屏蔽Home键
- android 屏蔽home键
- android 屏蔽home键
- Android屏蔽HOME键
- android屏蔽Home键
- android 屏蔽HOME键
- android home键屏蔽
- Android 屏蔽Home键
- Android 屏蔽home键
- 屏蔽 Home 键 (Android|)
- Android 中屏蔽 Home 键
- Android 如何屏蔽Home键
- 文件后缀名的显示
- ADS之can not openfile XX.o
- Struts中访问Servlet对象的方式(与Servlet API解耦的访问方式)
- 魔术方法__sleep和__wakeup、序列与反序列
- 矩阵分解——三角分解(二)
- android 采用windowmanager屏蔽HOME键
- Android自定义控件
- android button light 流程分析(一) — driver
- 【CSS疑难杂症】z-index 层级树
- spring IOC的好处与坏处
- MySQL—一个单引号引发的MYSQL性能损失
- hdu-1754 I Hate It(线段树求区间最大值)
- C语言函数sscanf()的用法
- classes could not be found: - android.support.v7.i