在 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 表单输入字段的禁用文本颜色?

Xamarin.Forms - 如果 webView 包含在 Android 上打开的模式或菜单,有没有办法禁用拉刷新?

在 xamarin 表单上构建错误:Android

带有原生 Android 工具栏的 Xamarin 表单

如何使用适用于 Android 和 iOS 的 Xamarin 表单在特定频道上的 youtube 上上传视频?

如何在 Android 上管理从后台恢复的 Xamarin 表单应用程序?