XAMARIN C#Android:权限:是否实现API 23方法和常量?

XAMARIN C#Android:权限:是否实现API 23方法和常量?,xamarin,permissions,overlay,android-6.0-marshmallow,android-windowmanager,Xamarin,Permissions,Overlay,Android 6.0 Marshmallow,Android Windowmanager,我需要将WindowManager与WindowManagerTypes.SystemOverlay参数一起使用 此权限已在我的项目上启用 但它是APIapps=>ApplicationManager设置中启用参数“Drawover other apps” 我在Xamarin中找不到:Settings.actionmanageoverypermission或Settings.CanDrawOverlays函数,它是否已实现 此元素是从Xamarin.Android版本5.1.99添加的(请参见下

我需要将WindowManager与WindowManagerTypes.SystemOverlay参数一起使用

此权限已在我的项目上启用

但它是API<23的参数

我使用API 23(Android 6.0)开发

我需要在我的Android手机的Settings=>apps=>ApplicationManager设置中启用参数“Drawover other apps”

我在Xamarin中找不到:Settings.actionmanageoverypermission或Settings.CanDrawOverlays函数,它是否已实现

此元素是从Xamarin.Android版本5.1.99添加的(请参见下面的链接):

但我不能使用元素

我使用java代码来解释实现问题(见下文),我想用C语言编写这段代码

JAVA代码

public static int ACTION_MANAGE_OVERLAY_PERMISSION_REQUEST_CODE= 5469;

public void testPermission() {
    if (!Settings.canDrawOverlays(this)) {
        Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
                Uri.parse("package:" + getPackageName()));
        startActivityForResult(intent, ACTION_MANAGE_OVERLAY_PERMISSION_REQUEST_CODE);
    }
}
Result :

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == ACTION_MANAGE_OVERLAY_PERMISSION_REQUEST_CODE) {
        if (Settings.canDrawOverlays(this)) {
            // You have permission
        }
    }
}

以下代码对我来说似乎很好:

private const int RequestCode = 5469;

private void TestPermission()
{
    if (Build.VERSION.SdkInt < BuildVersionCodes.M) return;
    if (!Settings.CanDrawOverlays(this)) return;

    var intent = new Intent(Settings.ActionManageOverlayPermission);
    intent.SetPackage(PackageName);
    StartActivityForResult(intent, RequestCode);
}

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
    if (requestCode == RequestCode)
    {
        if (Settings.CanDrawOverlays(this))
        {
            // we have permission
        }
    }

    base.OnActivityResult(requestCode, resultCode, data);
}
private const int RequestCode=5469;
私有void TestPermission()
{
if(Build.VERSION.SdkInt
Settings
位于
Android.Provider
命名空间中

确保在项目属性中,将“使用Android verision编译”设置为等于或高于Marshmallow的API级别,并将“目标Android版本”设置为Marshmallow或更高


还要确保您的Android SDK也安装了这些API级别。

以下代码对我来说似乎工作正常:

private const int RequestCode = 5469;

private void TestPermission()
{
    if (Build.VERSION.SdkInt < BuildVersionCodes.M) return;
    if (!Settings.CanDrawOverlays(this)) return;

    var intent = new Intent(Settings.ActionManageOverlayPermission);
    intent.SetPackage(PackageName);
    StartActivityForResult(intent, RequestCode);
}

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
    if (requestCode == RequestCode)
    {
        if (Settings.CanDrawOverlays(this))
        {
            // we have permission
        }
    }

    base.OnActivityResult(requestCode, resultCode, data);
}
private const int RequestCode=5469;
私有void TestPermission()
{
if(Build.VERSION.SdkInt
Settings
位于
Android.Provider
命名空间中

确保在项目属性中,将“使用Android verision编译”设置为等于或高于Marshmallow的API级别,并将“目标Android版本”设置为Marshmallow或更高


另外,请确保您的Android SDK也安装了这些API级别。

它没有命中OnActivityResult()?它没有命中OnActivityResult()?