在 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;
}
}
感谢任何帮助。
谢谢。
创建一个新页面并将其设为主页面,只是为了检查应用程序是否在应用程序开头或页面显示时询问。
我正在开发一个使用位置的跨平台应用程序,当然,为了能够使用用户的位置,它需要他们的许可。我想要做的是显示一个隐私披露弹出窗口,在用户阅读后他们可以点击“访问位置”,我希望应用程序请求访问位置的权限。然而发生的事情是,当应用程序第一次打开时,它会自动请求位置许可,而披露在下面,我不明白为什么。
这是我的清单:
<?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;
}
}
感谢任何帮助。
谢谢。
创建一个新页面并将其设为主页面,只是为了检查应用程序是否在应用程序开头或页面显示时询问。