带有两个按钮(动作)的通知。我处理的是:
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?。
答案 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;