C# 在锁定状态下在电话屏幕上显示Toast

C# 在锁定状态下在电话屏幕上显示Toast,c#,xamarin.forms,xamarin.android,android-toast,android-phone-call,C#,Xamarin.forms,Xamarin.android,Android Toast,Android Phone Call,我们的目标是在接到来电时敬酒当设备被锁定并发生输入呼叫时,此操作将不起作用。然后,在“锁定的全屏输入呼叫视图”后面可以看到toast 我们尝试了不同的方法,得到了相同的结果: PhoneCallListener/BroadcastReceiver 使用带有一些标志的新意图(ShowOnLockScreen等),而不是祝酒词 权限: <uses-permission android:name="android.permission.READ_PHONE_STATE" /> pub

我们的目标是在接到来电时敬酒当设备被锁定并发生输入呼叫时,此操作将不起作用。然后,在“锁定的全屏输入呼叫视图”后面可以看到toast

我们尝试了不同的方法,得到了相同的结果:

  • PhoneCallListener/BroadcastReceiver
  • 使用带有一些标志的新意图(ShowOnLockScreen等),而不是祝酒词
权限:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
public class PhoneCallDetector : PhoneStateListener
{
    public override void OnCallStateChanged(CallState state, string incomingNumber)
    {
        ShowToast(incomingNumber);
        base.OnCallStateChanged(state, incomingNumber);
    }


    private void ShowToast(string phonenumber)
    {
        Toast toast = Toast.MakeText(Application.Context, phonenumber, ToastLength.Long);
        toast.SetGravity(GravityFlags.Center, 0, 0);
        toast.Show();
    }
}
我们知道一些应用程序可以通过“锁定全屏输入通话视图”成功显示祝酒词,但它们是用java编写的。。。他们也不做任何特别的事情,然后Toast.MakeText(..)

编辑: =>PhoneStateListener生活在后台。从服务开始。

服务是如何开始的

Intent serviceStart = new Intent(context, typeof(PhoneCallService));
context.StartService(serviceStart);
如何调用PhoneCallDetector

 var phoneCallDetector = m_scope.Resolve<PhoneCallDetector>();
 var tm = (TelephonyManager)GetSystemService(TelephonyService);
 tm.Listen(phoneCallDetector, PhoneStateListenerFlags.CallState);
var phoneCallDetector=m_scope.Resolve();
var tm=(TelephonyManager)GetSystemService(TelephonyService);
Listen(phoneCallDetector,PhoneStateListenerFlags.CallState);

感谢您的帮助:-)

您需要阅读此内容并参考此链接

Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS = "lock_screen_allow_private_notifications"

Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS = "lock_screen_show_notifications"


int ShowAll = Settings.Secure.getInt(getContentResolver(),"lock_screen_allow_private_notifications", -1); 
int NotificationEnable = Settings.Secure.getInt(getContentResolver(),"lock_screen_show_notifications", -1); 

if(ShowAll > 0 && NotificationEnable > 0){
//post notification
}

您看到了哪些Java库,如果您链接了一些,我很乐意看看他们的库是否有可以转换的内容,我倾向于在业余时间将Java转换为与Xamarin兼容的库等。该应用程序名为“local.ch”()。此应用程序与此相同(但使用java编写)->BackgroundService->TelephonyService->ShowToast。不同的是,这个应用程序的祝酒词是在锁定的手机屏幕上…谷歌给了某些知名度高的开发者一些“超级秘密”权限,这些权限只允许motals做不到的事情(参见Facebook最近关于在用户不知情的情况下捕获屏幕截图的文章)。也许这就是其中之一。如果你不能使用“普通”方法访问锁定页面,可能是因为你不能访问。可能是,我认为他们没有特别的权限。我想在电话铃响(来电)时显示更多信息,这是sooo crazy特别节目吗?谢谢你的回答。我想干杯,而不是通知:(我发现,我的方法是在三星Galaxy S6上使用安卓8.0,但在小米M1或像素2上不起作用,奇怪。。。。