XAMARIN C#Android:权限:是否实现API 23方法和常量?
我需要将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代码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添加的(请参见下
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()?