我试图将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);
}我的Manifest文件中列出了权限
<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应该处理的权限。我一定是漏掉了什么。我必须手动请求权限吗?
发布于 2020-01-17 22:09:11
这不是由Android操作系统自动执行的。当您要使用需要权限的东西时,您需要手动请求权限。在您的情况下,位置权限。最简单的方法是使用权限插件Plugin.Permissions。
您还需要处理来自用户的响应,因为如果您在用户拒绝后尝试使用该权限,您的应用程序就会崩溃。
发布于 2020-01-18 12:42:46
你不会错过任何关于它是否起作用的东西。
只是你错过了,一个插件不可能知道你正在安装和使用的另一个插件,将需要许可的位置。这些权限需要在运行时在应用程序中的特定位置请求,并且必须由需要权限的插件来处理(该插件将在此时被激活,如果程序被编程这样做,则可以进行检查)或由您自己处理。
https://stackoverflow.com/questions/59795230
复制相似问题