在 Android Xamarin 表单上禁用自动位置权限
Posted
技术标签:
【中文标题】在 Android Xamarin 表单上禁用自动位置权限【英文标题】:Disable Automatic Location Permission on Android Xamarin Forms 【发布时间】:2021-11-20 16:09:16 【问题描述】:我正在开发一个使用位置的跨平台应用程序,当然它需要用户的许可才能使用用户的位置。我想要做的是显示一个隐私披露弹出窗口,在用户阅读后他们可以点击“访问位置”,我希望应用程序请求访问位置的权限。然而,发生的情况是,当应用程序第一次打开时,它会自动要求位置许可,并在下面披露,我不明白为什么。
这是我的清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="7" android:versionName="7.0" package="com.mmh.app">
<uses-sdk android:minSdkVersion="25" android:targetSdkVersion="30" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature android:name="android.hardware.location" android:required="true" />
<uses-feature android:name="android.hardware.location.gps" android:required="true" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-feature android:name="android.hardware.location.network" android:required="true" />
<application android:label="App.Android" android:usesCleartextTraffic="true" android:theme="@style/MainTheme" android:icon="@drawable/appicon">
</application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>
这是我的 MainActivity.cs
namespace App.Droid
[Activity(Label = "App", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
protected override void OnCreate(Bundle savedInstanceState)
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
// CrossCurrentActivity.Current.Activity = this;
Rg.Plugins.Popup.Popup.Init(this);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
LoadApplication(new App());
//CrossCurrentActivity.Current.Init(this, savedInstanceState);
CreateNotificationFromIntent(Intent);
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
void CreateNotificationFromIntent(Intent intent)
if (intent?.Extras != null)
string title = intent.GetStringExtra(AndroidNotificationManager.TitleKey);
string message = intent.GetStringExtra(AndroidNotificationManager.MessageKey);
DependencyService.Get<INotificationManager>().ReceiveNotification(title, message);
public override void OnBackPressed()
//Rg.Plugins.Popup.Popup.SendBackPressed(base.OnBackPressed);
return;
感谢任何帮助。
谢谢。
【问题讨论】:
你如何或在哪里申请权限? 当用户点击“开启位置”按钮,但由于某种原因,权限在应用启动后立即显示 【参考方案1】:创建一个新页面并将其设置为 MainPage,只是为了检查应用程序是否在应用程序开头或页面显示时询问。
【讨论】:
以上是关于在 Android Xamarin 表单上禁用自动位置权限的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin.Forms - 如果 webView 包含在 Android 上打开的模式或菜单,有没有办法禁用拉刷新?