xamarin android权限请求,PermissionsPlugin

Xamarin的权限插件

简单的跨平台插件请求和检查权限。

想了解关于创建,签出我的的深度博客帖子。

设置

平台支持平台版本Xamarin.iOSiOS 8 +

Xamarin.AndroidAPI 14 +

Windows 10 UWP ( 测试版)10 +

*See 平台说明

生成状态:

68747470733a2f2f6a616d65736d6f6e74656d61676e6f2e76697375616c73747564696f2e636f6d2f5f617069732f7075626c69632f6275696c642f646566696e6974696f6e732f36623739613337382d646464362d346533312d393861632d6131326663643638363434632f31392f6261646765

在你的BaseActivity或者 MainActivity ( 用于 xamarin.forms ) 中指定 可以添加以下代码:publicoverridevoidOnRequestPermissionsResult(intrequestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)

{

PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);

base.OnRequestPermissionsResult(requestCode, permissions, grantResults);

}

Android当前 Activity 设置

这个插件使用当前的Activity 插件插件来访问当前的安卓服务器。 如果 MainApplication.cs 文件未自动添加到应用程序中,请确保完成完整设置。 请仔细阅读当前的Activity 插件文档。 至少,你必须在活动方法的OnCreate中设置以下内容:Plugin.CurrentActivity.CrossCurrentActivity.Current.Init(this, bundle);

iOS

你必须将信息添加到你的info.plist. 中,然后阅读安全和隐私指南,你需要添加这些信息,才能使用。

由于API使用情况,需要添加日历权限:(NSCalendarsUsageDescription

Needs Calendar Permission

即使你的应用程序可能根本不使用日历。 我寻找未来的解决方法。

API用法

从任何项目或者PCL中调用 CrossPermissions.Current 以获取对api的访问权限。

应显示请求原理/// /// Request to see if you should show a rationale for requesting permission/// Only on Android/// /// True or false to show rationale/// Permission to check.Task ShouldShowRequestPermissionRationaleAsync(Permissionpermission);

CheckPermissionStatus/// /// Determines whether this instance has permission the specified permission./// /// true if this instance has permission the specified permission; otherwise, false./// Permission to check.Task CheckPermissionStatusAsync(Permissionpermission);

RequestPermissions/// /// Requests the permissions from the users/// /// The permissions and their status./// Permissions to request.Task> RequestPermissionsAsync(paramsPermission[] permissions);

运行

你可以将它与Geolocator插件一起使用:try{

varstatus=awaitCrossPermissions.Current.CheckPermissionStatusAsync(Permission.Location);

if (status!=PermissionStatus.Granted)

{

if(awaitCrossPermissions.Current.ShouldShowRequestPermissionRationaleAsync(Permission.Location))

{

awaitDisplayAlert("Need location", "Gunna need that location", "OK");

}

varresults=awaitCrossPermissions.Current.RequestPermissionsAsync(Permission.Location);

//Best practice to always check that the key existsif(results.ContainsKey(Permission.Location))

status=results[Permission.Location];

}

if (status==PermissionStatus.Granted)

{

varresults=awaitCrossGeolocator.Current.GetPositionAsync(10000);

LabelGeolocation.Text="Lat: "+results.Latitude+" Long: "+results.Longitude;

}

elseif(status!=PermissionStatus.Unknown)

{

awaitDisplayAlert("Location Denied", "Can not continue, try again.", "OK");

}

}catch (Exceptionex)

{

LabelGeolocation.Text="Error: "+ex;

}

可用权限/// /// Permission group that can be requested/// publicenumPermission{

/// /// The unknown permission only used for return type, never requested/// Unknown,

/// /// Android: Calendar/// iOS: Calendar (Events)/// UWP: None/// Calendar,

/// /// Android: Camera/// iOS: Photos (Camera Roll and Camera)/// UWP: None/// Camera,

/// /// Android: Contacts/// iOS: AddressBook/// UWP: ContactManager/// Contacts,

/// /// Android: Fine and Coarse Location/// iOS: CoreLocation (Always and WhenInUse)/// UWP: Geolocator/// Location,

/// /// Android: Microphone/// iOS: Microphone/// UWP: None/// Microphone,

/// /// Android: Phone/// iOS: Nothing/// UWP: None/// Phone,

/// /// Android: Nothing/// iOS: Photos/// UWP: None/// Photos,

/// /// Android: Nothing/// iOS: Reminders/// UWP: None/// Reminders,

/// /// Android: Body Sensors/// iOS: CoreMotion/// UWP: Device Access Sensor Class/// Sensors,

/// /// Android: Sms/// iOS: Nothing/// UWP: None/// Sms,

/// /// Android: External Storage/// iOS: Nothing/// UWP: None/// Storage/// /// Android: Microphone/// iOS: Speech/// UWP: None/// Speech

}

重要 Android:

你仍然需要在你的AndroidManifest.xml 中请求权限。 也确保你的MainApplication.cs 从CurrentActivity插件中正确设置。 Windows 10 UWP

UWP有一组受支持的权限。 你可以看到文档 上面,但目前支持: 联系人,位置和传感器。贡献者icon,感谢 Jérémie。

谢谢!许可证

在主 repo 许可下许可( MIT )

希望支持这里项目?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值