在 Android Xamarin Forms 上禁用自动位置权限

Disable Automatic Location Permission on Android Xamarin Forms

我正在开发一个使用位置的跨平台应用程序,当然,为了能够使用用户的位置,它需要他们的许可。我想要做的是显示一个隐私披露弹出窗口,在用户阅读后他们可以点击“访问位置”,我希望应用程序请求访问位置的权限。然而发生的事情是,当应用程序第一次打开时,它会自动请求位置许可,而披露在下面,我不明白为什么。

这是我的清单:

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

       
    }

感谢任何帮助。

谢谢。

创建一个新页面并将其设为主页面,只是为了检查应用程序是否在应用程序开头或页面显示时询问。