在运行通知操作之前,请解锁设备

时间:2019-02-21 10:38:53

标签: xamarin.android

带有两个按钮(动作)的通知。我处理的是:

    public class NotificationActionHandler : BroadcastReceiver
{
    public override void OnReceive(Context context, Intent intent)
}

目标:用户在被允许按下按钮之前先对其进行解锁。 我尝试了一些操作,但可以按下按钮

我该如何解决?我尝试过:How to ask user to unlock device on clicking notification action in android?

2 个答案:

答案 0 :(得分:1)

我无法正确理解您的问题,因为它有点含糊不清,因此,我仅假设您无法转换代码并为您完成代码:

对于API> = 26

KeyguardManager km = (KeyguardManager)GetSystemService(Context.KeyguardService);
km.RequestDismissKeyguard(this, null); // you may add callback listener here

对于API <26

Window.AddFlags(WindowManagerFlags.DismissKeyguard);

或者在“通知”服务中的“通知”中使用“活动意图”而不是“通知”中的服务:

 Intent intent = new Intent(Context, typeof(YourActivity));
 intent.PutExtra(key, "my_value"); //Used to send information to action class
 PendingIntent pi = PendingIntent.GetActivity(Context, 0, intent,
                                         PendingIntentFlags.UpdateCurrent);

答案 1 :(得分:1)

同意hakim,您能否提供有关此问题的更多信息?如果您不知道如何进行requestDismissKeyguard函数的回调。您可以像下面的代码一样创建新的KeyguardDismissCallback

 km.RequestDismissKeyguard(this, new MyKeyguardDismissCallback());


 public class MyKeyguardDismissCallback : KeyguardDismissCallback
    {
        public override void OnDismissError()
        {
            base.OnDismissError();
        }

        public override void OnDismissSucceeded()
        {
            base.OnDismissSucceeded();
        }

        public override void OnDismissCancelled()
        {
            base.OnDismissCancelled();
        }
    }

如果您不知道如何在广播接收器中进行活动。您可以使用此Xamarin.Android插件获取正在显示的当前活动。

var activity = Plugin.CurrentActivity.CrossCurrentActivity.Current.Activity;

相关问题