1 permissions overlay android-windowmanager xamarin android-6.0-marshmallow
我需要将 WindowManager 与 WindowManagerTypes.SystemOverlay 参数一起使用
在我的项目上启用了此权限
但它是 API < 23 的参数
我使用 API 23 (Android 6.0) 开发
我需要在我的 Android 测试手机的设置 => 应用程序 => 应用程序管理器设置中启用参数“绘制其他应用程序”
我在 Xamarin 中找不到:Settings.ActionManageOverlayPermission 和 Settings.CanDrawOverlays 函数,它是否已实现?
此元素是从 Xamarin.Android 版本 5.1.99 添加的(请参阅下面的链接):
但我不能使用元素。
我使用 java 代码来解释实现问题(见下文),我想做这段代码,但当然是在 C# 中。
爪哇代码
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
}
}
}
Run Code Online (Sandbox Code Playgroud)
以下代码对我来说似乎工作正常:
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);
}
Run Code Online (Sandbox Code Playgroud)
Settings在Android.Provider命名空间中
确保在您的项目属性中,将“使用 Android 版本编译”设置为等于或高于 Marshmallow 的 API 级别,并将“目标 Android 版本”也设置为 Marshmallow 或更高。
还要确保您的 Android SDK 也安装了这些 API 级别。
| 归档时间: |
|
| 查看次数: |
1272 次 |
| 最近记录: |