4134622-78e9cc9dfe0bcbf2.jpg (5.29 KB, 下载次数: 1609)
下载附件 保存到相册
7 年前 上传
// 模拟推送,在退出APP后的一段时间发送消息 /** * 模仿推送,发消息 */ private void sendMessage() { new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } Intent intent = new Intent(); intent.setAction("com.zx.lockscreenmsgdemo.LockScreenMsgReceiver"); sendBroadcast(intent); //发送广播 } }).start(); } }
/** * 监听锁屏消息的广播接收器 */ public class LockScreenMsgReceiver extends BroadcastReceiver { private static final String TAG = "LockScreenMsgReceiver"; @Override public void onReceive(Context context, Intent intent) { Log.i(TAG, "onReceive:收到了锁屏消息 "); String action = intent.getAction(); if (action.equals("com.zx.lockscreenmsgdemo.LockScreenMsgReceiver")) { //管理锁屏的一个服务 KeyguardManager km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); String text = km.inKeyguardRestrictedInputMode() ? "锁屏了" : "屏幕亮着的"; Log.i(TAG, "text: " + text); if (km.inKeyguardRestrictedInputMode()) { Log.i(TAG, "onReceive:锁屏了 "); //判断是否锁屏 Intent alarmIntent = new Intent(context, MessageActivity.class); //在广播中启动Activity的context可能不是Activity对象,所以需要添加NEW_TASK的标志,否则启动时可能会报错。 alarmIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(alarmIntent); //启动显示锁屏消息的activity } } } }
public class MessageActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.i("tag", "onCreate:启动了消息内容的activity "); //四个标志位顾名思义,分别是锁屏状态下显示,解锁,保持屏幕长亮,打开屏幕。这样当Activity启动的时候,它会解锁并亮屏显示。 Window win = getWindow(); win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED //锁屏状态下显示 | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD //解锁 | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON //保持屏幕长亮 | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); //打开屏幕 // Drawable wallPaper = WallpaperManager.getInstance( this).getDrawable(); // win.setBackgroundDrawable(wallPaper); setContentView(R.layout.activity_message); } }
//先解锁系统自带锁屏服务,放在锁屏界面里面 KeyguardManager keyguardManager = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE); keyguardManager.newKeyguardLock("").disableKeyguard(); //解锁 //点击进入消息对应的页面 mContext.startActivity(new Intent(mContext, DetailsActivity.class)); finish();
<activity android:name=".activity.MessageActivity" android:excludeFromRecents="true" android:launchMode="singleInstance" android:taskAffinity="" />
<!-- 解锁屏幕需要的权限 --> <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> <!-- 申请电源锁需要的权限 --> <uses-permission android:name="android.permission.WAKE_LOCK" />
来源:即时通讯网 - 即时通讯开发者社区!
轻量级开源移动端即时通讯框架。
快速入门 / 性能 / 指南 / 提问
轻量级Web端即时通讯框架。
详细介绍 / 精编源码 / 手册教程
移动端实时音视频框架。
详细介绍 / 性能测试 / 安装体验
基于MobileIMSDK的移动IM系统。
详细介绍 / 产品截图 / 安装体验
一套产品级Web端IM系统。
详细介绍 / 产品截图 / 演示视频
引用此评论
引用:shenjf325 发表于 2019-07-05 13:52 正需要,不知道合不合适
精华主题数超过100个。
连续任职达2年以上的合格正式版主
为论区做出突出贡献的开发者、版主等。
在线时长累积7天(即7 * 8 = 56小时)。
持有金钱达到500。
光棍节活动纪念章。
积极发起、参与各类话题的讨论等,主题、发帖内容较有价值。
本人属:猪
本人属:猴
在线时长累积30天(即30 * 8 = 240小时)。
Copyright © 2014-2024 即时通讯网 - 即时通讯开发者社区 / 版本 V4.4
苏州网际时代信息科技有限公司 (苏ICP备16005070号-1)
Processed in 0.231455 second(s), 48 queries , Gzip On.