StartLockTask失败,并显示硬件按钮

时间:2019-03-28 23:00:37

标签: android xamarin xamarin.forms xamarin.android kiosk-mode

我已经遍历了供应和所有权要求,以使用SetLockTaskPackages()StartLockTask()。在仿真器中,StartLockTask()可以正常工作。屏幕上的按钮已删除,并且屏幕上显示消息“您的组织不允许取消固定。”

此方法似乎在受支持的设备上效果很好,可以将用户锁定在类似自助服务终端的环境中。尽管某些设备(例如 Samsung Galaxy TabA 7 )具有硬件按钮。即使告诉用户“您的组织不允许取消固定。” 他们仍然可以使用硬件按钮组合来退出应用程序。

为此,我的解决方案是检测OnLockTaskModeExiting,然后通知我的MainActivity重新应用我的策略和StartLockTask()

所以我上了EventPasser类。工作是将一个事件从DeviceAdminReceiver引发到我的MainActivity

    public class EventPasser
    {
        public static event EventHandler ScreenUnlocked;

        public static void RaiseUnlockEvent()
        {
            EventHandler handler = ScreenUnlocked;
            if (null != handler) handler(null, EventArgs.Empty);
        }
    }

在我的DeviceAdminReceiver中,我听OnLockTaskModeExiting并引发一个附加在我的MainActivity.中的事件

    public class DeviceAdmin : DeviceAdminReceiver
    {
        public override void OnLockTaskModeExiting(Context context, Intent intent)
        {

            base.OnLockTaskModeExiting(context, intent);

            // Raise our Unlock Event
            EventPasser.RaiseUnlockEvent();

        }
     }

MainActivity的{​​{1}}中,我挂接到了静态事件。

OnCreate

该事件只是重新应用了我的锁定策略和 EventPasser.ScreenUnlocked += EventPasser_ScreenUnlocked;

StartLockTask()

从您看到消息“应用程序已锁定在屏幕上”的小烦恼来看,这非常有效。

我是c#程序员,还不是Android开发人员。我是Android的新手,我已经知道了如何解决这个问题。我觉得我应该能够避免这种事件传递解决方案,我只是不知道怎么做。

是否有更直接的方法在 private void EventPasser_ScreenUnlocked(object sender, EventArgs e) { RegisterAndLock(); } 上重新应用我的StartLockTask()软件包? 甚至更好;有没有一种方法可以强制OnLockTaskModeExiting遵守硬件按钮?

0 个答案:

没有答案