我正在创建一个简单的联系人管理小部件,允许用户拨打电话和发送短信给所需联系人。
当我将其添加为Android 4.2上的锁屏小部件时,它作为“普通小部件”正常工作,但是短信应用程序或拨号应用程序不会启动。实际上,它们确实启动了,但是在锁屏后面,因此用户仍然必须手动解锁屏幕才能拨打/发送短信。
我在网上搜索了一些解决方案,但没有找到合适的。我知道FLAG_DISABLE_KEYGUARD或FLAG_SHOW_WHEN_LOCKED,但由于短信/拨号应用程序不是“我的”,所以我不知道它们是否设置了正确的标志。作为解决方法,我尝试创建自己的活动来设置这些标志,然后简单地启动所需的一个(拨号或短信),但这并没有帮助。
有一种解锁屏幕的方法,但这涉及使用KeyguardManager和KeyguardLock(它们工作得很好),但是在使用KeyguardLock.newKeyguardLock()时,我最终无法自动关闭锁定,肯定是因为我没有释放这个锁(它会导致锁再次出现,这不是我想要的)。
实际上,这个小部件应该与锁屏上的默认短信小部件或邮件小部件类似工作?
所以,我的问题是,如何实现从锁屏开始新活动?
当我将其添加为Android 4.2上的锁屏小部件时,它作为“普通小部件”正常工作,但是短信应用程序或拨号应用程序不会启动。实际上,它们确实启动了,但是在锁屏后面,因此用户仍然必须手动解锁屏幕才能拨打/发送短信。
我在网上搜索了一些解决方案,但没有找到合适的。我知道FLAG_DISABLE_KEYGUARD或FLAG_SHOW_WHEN_LOCKED,但由于短信/拨号应用程序不是“我的”,所以我不知道它们是否设置了正确的标志。作为解决方法,我尝试创建自己的活动来设置这些标志,然后简单地启动所需的一个(拨号或短信),但这并没有帮助。
有一种解锁屏幕的方法,但这涉及使用KeyguardManager和KeyguardLock(它们工作得很好),但是在使用KeyguardLock.newKeyguardLock()时,我最终无法自动关闭锁定,肯定是因为我没有释放这个锁(它会导致锁再次出现,这不是我想要的)。
实际上,这个小部件应该与锁屏上的默认短信小部件或邮件小部件类似工作?
所以,我的问题是,如何实现从锁屏开始新活动?
PendingIntent
和RemoteView
类来实现它。最好的方法是查看文档。简而言之,当您通过RemoteView
配置视图时,只需通过RemoteView#setOnClickFillInIntent
方法将PendingIntent
对象注入其中即可。 - Filip Zymek