首页 > 解决方案 > StartLockTask 因硬件按钮而失败

问题描述

我已经完成了使用SetLockTaskPackages()StartLockTask(). 在模拟器中StartLockTask()按预期工作。屏幕上的按钮已删除,并显示“您的组织不允许取消固定”消息。显示在屏幕上。

此方法似乎在支持的设备上运行良好,可将用户锁定在类似信息亭的环境中。尽管某些设备(例如三星 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的上OnCreate我连接到静态事件。

    EventPasser.ScreenUnlocked += EventPasser_ScreenUnlocked;

该事件只是重新应用我的锁定策略和StartLockTask().

    private void EventPasser_ScreenUnlocked(object sender, EventArgs e)
    {
        RegisterAndLock();
    }

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

我是 ac# 程序员,还不是 Android 开发人员。我对 Android 很陌生,我已经以我知道的方式解决了这个问题。我觉得我应该能够避免这个事件传递解决方案,我只是不知道如何。

有没有更直接的方法来重新申请我的StartLockTask()包裹OnLockTaskModeExiting?甚至更好;有没有办法强制StartLockTask()尊重硬件按钮?

标签: androidxamarinxamarin.formsxamarin.androidkiosk-mode

解决方案


推荐阅读