目标: Google Play 控制台要求我将应用程序更新到 Android 13。我的应用程序是 Xamarin.Android
问题: 当我将清单更新到 TargetSdk 33 时,我无法再访问图库中的图像。它不再请求权限
它是在 targetSdkVersion 31 上,我将其更新为:
android:targetSdkVersion="33"
我尝试过的:
我已尝试确保清单文件具有以下权限: https://developer.android.com/about/versions/13/behavior-changes-13#capsular-media-permissions 未授予Android API 33权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
我还尝试在 SDK 管理器中更新,它可以下载,但无法安装 API 33 的系统映像。它说“对象引用未设置到对象的实例” 这提到单击“显示详细信息”,但我在安装程序中的任何地方都没有看到该选项。 下载 Google API Intel x86 Atom 系统映像时出错
我还尝试使用断点和使用 logcat 通过调试器,但我没有看到任何错误。
我现在被困住了。我还能错过什么吗?
您可以尝试更新您的Visual Studio,并使android sdk成为较新的版本。我使用的是Visual Studio 2022 17.6.5,以下代码可以在android 13.0上请求图像权限:
在主要活动中:
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.activity_main);
if (ActivityCompat.CheckSelfPermission(this, Android.Manifest.Permission.ReadMediaImages) != Android.Content.PM.Permission.Granted)
{
if ((int)Android.OS.Build.VERSION.SdkInt > 32)
{
AndroidX.Core.App.ActivityCompat.RequestPermissions(
Xamarin.Essentials.Platform.CurrentActivity, new string[] { Android.Manifest.Permission.ReadMediaImages }, 101);
}
else
{
AndroidX.Core.App.ActivityCompat.RequestPermissions(
Xamarin.Essentials.Platform.CurrentActivity, new string[] { Android.Manifest.Permission.ReadExternalStorage }, 101);
}
}
}