You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin.Android开发:Android12全文件访问权限问题求助

Android 12+ 全存储访问解决方案(Xamarin.Android)

1. 清单文件配置

首先确保在AndroidManifest.xml中正确添加权限,权限需直接放在<manifest>标签下:

<!-- Android 10+ 全存储权限 -->
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
                 android:minSdkVersion="30" />
<!-- 兼容 Android 9 及以下的读写权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
                 android:maxSdkVersion="29" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
                 android:maxSdkVersion="29" />

2. 主动触发系统授权页面

MANAGE_EXTERNAL_STORAGE是Android 10+的特殊权限,无法通过常规的RequestPermissions方法申请,必须引导用户到系统设置页面手动开启授权。在Xamarin.Android中实现代码如下:

if (Build.VERSION.SdkInt >= BuildVersionCodes.R)
{
    // 检查是否已获得全存储权限
    if (!Environment.IsExternalStorageManager)
    {
        // 跳转到当前应用的全存储权限设置页
        var intent = new Intent(Settings.ActionManageAppAllFilesAccessPermission);
        intent.AddCategory(Intent.CategoryDefault);
        intent.SetData(Android.Net.Uri.Parse($"package:{PackageName}"));
        StartActivityForResult(intent, 100); // 100为自定义请求码
    }
}

随后在OnActivityResult中处理授权结果:

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
    base.OnActivityResult(requestCode, resultCode, data);
    if (requestCode == 100)
    {
        if (Build.VERSION.SdkInt >= BuildVersionCodes.R)
        {
            if (Environment.IsExternalStorageManager)
            {
                // 授权成功,执行读写逻辑
            }
            else
            {
                // 用户拒绝授权,可提示用户开启权限才能使用相关功能
            }
        }
    }
}

3. 重要提示

  • 该权限仅对文件管理器类应用开放Google Play上架权限,若你的应用不属于此类,提交审核时可能被拒绝,个人自用不受影响,但商用需评估合规性。
  • 若需兼容Android 10(API29),可在<application>标签添加android:requestLegacyExternalStorage="true",但Android 12+系统会忽略该属性。

内容的提问来源于stack exchange,提问作者readn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 02:28:21