在Android 2.3中通过锁屏显示触摸事件对话框

我想build立一个在锁屏上可见的对话框,并可以接收触摸事件。 我使用WindowManager创build了一个窗口,但只有TYPE_SYSTEM_OVERLAY标志显示在GB(Android 2.3.7)的锁屏上。

有没有一种方法来创build一个系统覆盖,在锁屏上可见,并可以在Android 2.3.7接收触摸事件?

FLAG_WATCH_OUTSIDE_TOUCH存在一个错误,但我不确定这会如何影响我。 有任何想法吗?

Related of "在Android 2.3中通过锁屏显示触摸事件对话框"

我不认为你可以启动一个活动,每当设备被locking,而没有绑定你的应用程序作为pipe理privilaged应用程序编程。

一旦你的应用程序是pipe理员privilaged应用程序,您可以编程设置密码locking屏幕,然后使用设备策略pipe理器以编程方式解锁它。

在该locking屏幕的顶部,您可以编程方式启动您自己的活动,您可以通过该活动创build您自己的解锁器和解锁设备,因为您可以通过DeviceAdminReceiver回拨。

这是一个很好的例子,您需要的是在您调用DevicePolicyManager.lockNow()之后创build自己的活动。 然后,它会出现在locking屏幕顶部作为正常的活动加上本地锁屏的额外控制。

试试这可能会帮助你,

 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); setContentView(R.layout.alertdialog); 

而Android也有点矛盾。 这是非常开放的,作为一个开发者,你可以使用任何东西,这取决于你使用这些权力的好坏。 当我说恶,我不是指恶意软件。 我的意思是应用程序试图让可爱和使用的东西,他们并不打算使用的东西,如提出通知,要求您使用更多的应用程序。 矛盾的是,你实际上并没有获得所有的东西,开发者决定的几个部分非常重要,应用程序不能混淆他们。 锁屏是其中的一个部分。 您可以随意更换您的家庭应用程序,但不必担心更换locking屏幕失败,并阻止您访问您的手机。

即使这是可能的,你也会遇到更多的问题需要处理。 每个锁屏都是不同的,制造商可以自定义它,所以你不能保证你的活动不会妨碍解锁手机。

为了触摸对话外部,

 dialog.setCanceledOnTouchOutside(your boolean); 

最后我达到了同样的效果。 不要去做活动,因为android不会出于安全原因在你的活动后面显示锁屏,所以为了服务。

以下是我的服务onStartCommand中的代码

 WindowManager mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE); View mView = mInflater.inflate(R.layout.score, null); WindowManager.LayoutParams mLayoutParams = new WindowManager.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, 0, 0, WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON /* | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON */, PixelFormat.RGBA_8888); mWindowManager.addView(mView, mLayoutParams);