开发者社区> 问答> 正文

Xamarin.Forms.Essentials永远不会提示权限

我正在尝试将Xamarin.Forms.GoogleMaps与Android项目上的位置服务一起使用。我的问题是应用程序从不提示我输入位置权限。我的MainActivity.cs页面如下所示


    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);
    }

我拥有清单文件中列出的权限

<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”时

<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权限。我肯定错过了什么。我是否必须手动请求权限?

展开
收起
Puppet 2020-01-18 10:33:46 1098 0
1 条回答
写回答
取消 提交回答
  • 这不是Android OS自动执行的操作。当您要使用需要许可的内容时,需要手动请求许可。您的情况是“位置”权限。最简单的方法是使用权限插件Plugin.Permissions。

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

    2020-01-18 10:33:57
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Infecting-The-Enterprise-Abusing-Office365-Powershell-For-Covert-C2 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载