首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xamarin.Essentials从不预置权限

Xamarin.Essentials从不预置权限
EN

Stack Overflow用户
提问于 2020-01-17 21:45:29
回答 2查看 659关注 0票数 1

我试图将Xamarin.Forms.GoogleMapsAndroid项目中的位置服务结合使用。我的问题是,这个应用程序从不提示我输入位置权限。我的MainActivity.cs页面如下所示

代码语言:javascript
复制
    protected override void OnCreate(Bundle savedInstanceState)
    {
        TabLayoutResource = Resource.Layout.Tabbar;
        ToolbarResource = Resource.Layout.Toolbar;

        base.OnCreate(savedInstanceState);

        Xamarin.Essentials.Platform.Init(this, savedInstanceState);
        Xamarin.FormsGoogleMaps.Init(this, savedInstanceState);
        global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
        LoadApplication(new App());
    }
    public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
    {
        Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);

        base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
    }

我的Manifest文件中列出了权限

代码语言:javascript
复制
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

但是当我尝试使用Xamarin.Forms.GoogleMaps并设置MyLocationEnabled="True"

代码语言:javascript
复制
<StackLayout Grid.Row="2">
    <maps:Map VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" MyLocationEnabled="True"> 
    </maps:Map>
</StackLayout>

我得到以下错误

Java.Lang.SecurityException:“我的位置需要ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION的许可”

这个应用程序从未要求我授予我认为OnRequestPermissionsResult应该处理的权限。我一定是漏掉了什么。我必须手动请求权限吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-17 22:09:11

这不是由Android操作系统自动执行的。当您要使用需要权限的东西时,您需要手动请求权限。在您的情况下,位置权限。最简单的方法是使用权限插件Plugin.Permissions

您还需要处理来自用户的响应,因为如果您在用户拒绝后尝试使用该权限,您的应用程序就会崩溃。

票数 3
EN

Stack Overflow用户

发布于 2020-01-18 12:42:46

你不会错过任何关于它是否起作用的东西。

只是你错过了,一个插件不可能知道你正在安装和使用的另一个插件,将需要许可的位置。这些权限需要在运行时在应用程序中的特定位置请求,并且必须由需要权限的插件来处理(该插件将在此时被激活,如果程序被编程这样做,则可以进行检查)或由您自己处理。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59795230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档