gpt4 book ai didi

xamarin - 在类中请求 Android 权限 (Xamarin)

转载 作者:行者123 更新时间:2023-12-02 20:54:29 24 4
gpt4 key购买 nike

我正在尝试在运行时为我的应用程序请求权限。我使用服务提供商在可移植类和 Android 之间进行通信。

我首先在 PCL 中按下按钮时调用此代码:

using (new Busy(this))
{
var locationHelper = scope.Resolve<ILocationHelper>();
locationHelper.GetLocation(this);
}

这会调用我的 Android 级别服务:

public class AndroidLocationHelper : ILocationHelper, ILocationListener
{

readonly string[] PermissionsLocation =
{
Manifest.Permission.AccessCoarseLocation
};
const int RequestLocationId = 0;

public void GetLocation(SearchViewModel viewModel)
{
try
{
const string permission = Manifest.Permission.AccessCoarseLocation;
if (((int)Build.VERSION.SdkInt < 23) || (CheckSelfPermission(permission) == Permission.Granted))
{
}
else
RequestPermissions(PermissionsLocation, RequestLocationId);
}
catch (Exception ex)
{
Debug.WriteLine("Error while getting Location service");
Debug.WriteLine(ex.Message);
Messaging.AlertUser("There was an error with determining your location");
}
}

但是,我在 CheckSelfPermissionRequestPermissions 上收到两个错误。这两种方法仅适用于事件。该代码在 MainActivity 中运行良好;但是,我想在用户点击按钮时请求权限,而不是在 OnCreate 或 OnResume 等中请求权限。

感谢您的帮助。

最佳答案

在您的 Android 项目中,您可以使用它并稍后使用依赖项服务在 Xamarin.Forms PCL 项目中调用它:

var thisActivity = Forms.Context as Activity;
ActivityCompat.RequestPermissions(thisActivity, new string[] {
Manifest.Permission.AccessFineLocation }, 1);
ActivityCompat.RequestPermissions(thisActivity,
new String[] { Manifest.Permission.AccessFineLocation },
1);

关于xamarin - 在类中请求 Android 权限 (Xamarin),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40922806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com