我有一個用 Xamarin 撰寫的移動應用程式,請求許可的類看起來像這樣
public class AppPermissionsManager
{
private readonly string[] _permissions =
{
Manifest.Permission.AccessCoarseLocation,
Manifest.Permission.AccessFineLocation,
Manifest.Permission.AccessLocationExtraCommands,
Manifest.Permission.AccessNetworkState,
Manifest.Permission.AccessWifiState,
Manifest.Permission.Camera,
Manifest.Permission.Internet,
Manifest.Permission.ReadPhoneState,
Manifest.Permission.ReadExternalStorage,
Manifest.Permission.WriteExternalStorage
};
private readonly string[] _androidQPermissions =
{
Manifest.Permission.AccessCoarseLocation,
Manifest.Permission.AccessFineLocation,
Manifest.Permission.AccessLocationExtraCommands,
Manifest.Permission.AccessNetworkState,
Manifest.Permission.AccessWifiState,
Manifest.Permission.Camera,
Manifest.Permission.Internet,
Manifest.Permission.ReadPhoneState,
Manifest.Permission.ReadExternalStorage,
Manifest.Permission.WriteExternalStorage,
Manifest.Permission.AccessBackgroundLocation
};
public static int RequestLocationId = 0;
public bool CheckPermissions()
{
string[] permissions = GetPermissions();
foreach (var permission in permissions)
{
if (ContextCompat.CheckSelfPermission(Android.App.Application.Context, permission) != (int)Permission.Granted)
{
return false;
}
}
return true;
}
private string[] GetPermissions()
{
return Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Q ? _androidQPermissions : _permissions;
}
public void RequestPermissions()
{
try
{
var permissions = GetPermissions();
Activity activity = CrossCurrentActivity.Current.Activity;
ActivityCompat.RequestPermissions(activity, permissions, RequestLocationId);
}
catch (Exception ex)
{
LoggingHelper.LogError(ex, nameof(AppPermissionsManager), MethodBase.GetCurrentMethod().Name);
}
}
}
我的問題是 AccessBackgroundLocation 在 Android 11 上不起作用(當用戶打開應用程式時,會出現一個空白頁面并且沒有記錄錯誤)。如果我洗掉 AccessBackgroundLocation,該應用程式可以正常作業(后臺位置功能除外)
uj5u.com熱心網友回復:
后臺位置限制 Android 11 API 30
為了訪問后臺位置,用戶必須從設定頁面啟用權限。
編輯
在評論中@lee-m 的幫助下,您的問題的答案是,在 Android 11 中,當您同時要求 Foreground 和 Background 位置時,android 將忽略此請求并且不會授予任何一個權限.
首先,您需要前臺位置訪問權限,然后是后臺。如果您確實需要后臺位置,則需要提示您的用戶始終從應用程式的設定頁面啟用允許。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/409429.html
標籤:
