使用 xamarin 表单的 android 13 上的存储权限问题

2024-05-09

我在 Visual Studio 2022 的帮助下为我的 Android 项目使用 xamarin.forms。当我将代码运行到我的移动 Android 13 时,我没有获得 Android 13 的弹出权限。我只是将 androidtargetsdkversion 从 29 更新到 33。这是我的代码: AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal" package="com.myapp.app" android:versionCode="23" android:versionName="12.6.1">
<uses-sdk android:minSdkVersion="24" android:targetSdkVersion="33" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature android:name="android.hardware.telephony" android:required="false" />
<uses-feature android:name="android.hardware.location" android:required="false" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.location.network" android:required="false" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CALL_PHONE" android:required="false" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<application android:allowBackup="false" android:requestLegacyExternalStorage="true" android:label="FieldDirect" android:largeHeap="true">
<uses-library android:name="org.apache.http.legacy" android:required="false" />
<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/icon_transparent" />
<meta-data android:name="com.google.firebase.messaging.default_notification_color" android:resource="@color/brown" />
<meta-data android:name="com.google.android.geo.API_KEY" android:value="Adfsgrgsdvewsdvevwdvsdvsdv" />
<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" />
<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="${applicationId}" />
</intent-filter>
</receiver>
<service android:name="crc6494e14b9856016c30.PNFirebaseMessagingService" android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<provider android:name="android.support.v4.content.FileProvider" android:authorities="com.myapp.app.fileprovider" android:exported="false" android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_path" />
</provider>
</application>
</manifest>

应用程序.xaml.cs:

if (context != null)
 {
 if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.M)
 {
 if ((Android.Support.V4.Content.ContextCompat.CheckSelfPermission(context, Manifest.Permission.Camera) != Android.Content.PM.Permission.Granted)
 && (Android.Support.V4.Content.ContextCompat.CheckSelfPermission(context, Manifest.Permission.ReadExternalStorage) != Android.Content.PM.Permission.Granted)
 && (Android.Support.V4.Content.ContextCompat.CheckSelfPermission(context, Manifest.Permission.WriteExternalStorage) != Android.Content.PM.Permission.Granted)
 && (Android.Support.V4.Content.ContextCompat.CheckSelfPermission(context, Manifest.Permission.AccessCoarseLocation) != Android.Content.PM.Permission.Granted)
 && (Android.Support.V4.Content.ContextCompat.CheckSelfPermission(context, Manifest.Permission.AccessFineLocation) != Android.Content.PM.Permission.Granted)
 && (Android.Support.V4.Content.ContextCompat.CheckSelfPermission(context, Manifest.Permission.CallPhone) != Android.Content.PM.Permission.Granted)
 && (Android.Support.V4.Content.ContextCompat.CheckSelfPermission(context, Manifest.Permission.ReadPhoneState) != Android.Content.PM.Permission.Granted)
 && (Android.Support.V4.Content.ContextCompat.CheckSelfPermission(context, Manifest.Permission.ReadPhoneNumbers) != Android.Content.PM.Permission.Granted))
 {

 ActivityCompat.RequestPermissions(context, new String[] { Manifest.Permission.Camera,
 Manifest.Permission.ReadExternalStorage,
 Manifest.Permission.WriteExternalStorage,
 Manifest.Permission.AccessCoarseLocation,
 Manifest.Permission.AccessFineLocation,
 Manifest.Permission.ReadPhoneNumbers,
 Manifest.Permission.ReadPhoneState,
 Manifest.Permission.CallPhone }, 100);

 }
 }
 }

任何人请帮我解决这个问题


当我在手机 android 13 上运行代码时,我没有获得 android 13 的弹出权限。我只是将 androidtargetsdkversion 从 29 更新到 33。

关于READ,Android 13有一些新的变化:

如果您的应用面向 Android 13 或更高版本,并且需要访问其他应用创建的媒体文件,则您必须请求以下一项或多项精细媒体权限,而不是请求READ_EXTERNAL_STORAGE允许。

更详细的你可以参考这个:精细的媒体权限 https://developer.android.com/about/versions/13/behavior-changes-13#granular-media-permissions.

此外,你还可以看到亚历山大的在这个帖子里回答 https://stackoverflow.com/a/73630987/19902734。这总结得很好。希望它可以帮助你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 xamarin 表单的 android 13 上的存储权限问题 的相关文章

随机推荐

  • 在 Bookdown 中呈现附录图号

    Bookdown 是一个很棒的软件包 我期待看到它如何发展 但现在我在渲染数字方面遇到了麻烦pdf document2附录中的数字时的格式 具体来说 当带有标题的图形位于附录中时 图形编号应采用 A 1 A 2 B 1 B 2 等形式 但图
  • 无法访问类“std::basic_ios<_Elem,_Traits>”中声明的私有成员

    此特定方法有问题 不知道如何解决 我收到的错误是上面的 错误 C2248 std basic ios basic ios 不能 访问类中声明的私有成员 std basic ios C Program Files Microsoft Visu
  • 如何在 Swift ios 中获取国家/地区列表?

    我已经看到了两个与我类似的问题 但这些问题的答案对我不起作用 我有一个旧项目 其中在一组方括号内手动输入了国家 地区列表 我可以轻松地在我的 pickerView 中使用它 但我想知道是否有更有效的方法来做到这一点 我将在 UIPicker
  • 如何删除 TFS 工作区映射?

    我在一个团队项目中的 tfs 中有一个项目 然后我们将该项目移动到另一个团队项目中的不同位置 我已将 Jenkins 配置为连接到团队项目并构建我的解决方案 但是当我更改设置以连接到新的 tfs 团队项目时 出现以下错误 workspace
  • 如何动态更改字体名称?

    我正在使用 Jasper jar 生成有关我的 J2EE 项目的报告 我能够成功生成 PDF 没有任何问题 但是 我希望根据我们在一处配置的设置动态更改所有 PDF 的字体名称 我开始了解条件样式 这对于完成此任务很有用 然而 我确实有数百
  • AFNetworking 的 setImageWithURLRequest 在滚动后在错误的单元格中设置图像(iOS、Swift)

    我使用表dequeueReusableCellWithIdentifier and afnetworking uiimageview 我的一些细胞有图像 有些则没有 如果我在加载图像之前滚动表格 成功块会将图像放入重复使用的错误单元格中 例
  • 输入字段内的占位符自动换行

    我需要放一个很长的placeholder输入字段内的文本 但是 那placeholder由于文字较长 将被剪掉
  • 随机无效视图状态错误

    我知道关于这个主题有很多问题 我已经阅读了所有这些问题 我正在使用 IIS8 Net 4 5 用户随机收到无效视图状态错误 我无法弄清楚 一旦发生这种情况 他们返回网站的唯一方法就是清除浏览器缓存 在我的 web config 中我有
  • 如何在 [Authorize(Roles="")] 中使用变量

    我有一个 MVC 5 C Intranet Web 应用程序 其中使用了 30 多个 Active Directory 角色 并且由于业务文化的原因 权限经常发生变化 为了让事情变得简单 我想我应该尝试这样的事情来确定谁可以访问控制器操作或
  • 如何使 XML 文件始终在文本编辑器而不是 XML 编辑器中打开?

    我去档案协会那里没有 xml格式 当我添加它时 所有编辑器都会自动添加 并且它们是静态的 如下所示 locked by XML content type 无法删除关联 我希望每当我创建 XML 文件时 它都会用文本编辑器自动打开 请帮忙 单
  • 如何在Android首选项中正确接收和存储本地目录/路径?

    我想存储一个本地路径 内部或外部存储 用户可以在其中存储一些数据作为 Android 应用程序中的首选项 我希望用户在首选项中选择一个首选文件夹 默认文件夹是context externalMediaDirs它返回一个File我将其绝对路径
  • 具有类类型的 Java 反射 getDeclaredMethod()

    我试图理解 Java 反射 但在使用非整数 setter 方法时遇到困难 例如 如何解析下面的 getDeclaredMethod 调用 import java lang reflect class Target String value
  • Keras LSTM 密集层多维输入

    我正在尝试创建一个 keras LSTM 来预测时间序列 我的 x train 形状像 3000 15 10 示例 时间步长 特征 y train 形状像 3000 15 1 我正在尝试构建一个多对多模型 每个序列 10 个输入特征产生 1
  • 使用位移可视化 NER 训练数据和实体

    我创建了一个用于训练 NER 数据的数据集 创建后 我想在应用于训练管道之前测试实体和数据是否匹配 使用置换 我们可以以更好的方式进行可视化 但在 spacy 3 中如何做到这一点呢 上述问题的代码如下 import spacy from
  • 将阿拉伯文本分配给 R 变量

    R 无法正确显示阿拉伯文本 当我使用阿拉伯语时 我得到了非常奇怪的东西 这是一个屏幕截图 问题是我想创建一个带有阿拉伯文本的词云 我需要首先解决这个问题 R 版本 R 2 15 2 GUI 1 53 Leopard 版本 64 位 6335
  • RadGridView检测CellClick事件按钮

    如何检测在事件 CellClick 中按下了哪个鼠标按钮 或者如何检测在事件 MouseClick 中按下了哪个单元格 您可以使用鼠标单击事件检测单击了哪个单元格 然后你必须将 sender 转换为 RadGridView 然后使用 Cur
  • Room 分页无法正确地将 Flow> 与其他流合并

    我正在尝试使用Paging 3库来获取Flow
  • 如何使用 IPP 将 RGB 颜色空间转换为 NV12 颜色空间

    英特尔 Media SDK 等视频编码器需要 NV12 视频输入格式 NV12格式 http www fourcc org yuv php NV12是 YUV 4 2 0 格式 在内存中排序 首先是 Y 平面 然后是交错 UV 平面中的打包
  • 复杂的 Activiti + JPA 查询

    我们正在尝试在一个新项目中使用Activiti 我创建了一个设置 它通过 JPA 使用 Hibernate 来持久保存流程中涉及的实体 并且 JPA 与 Activiti 互连 因此我们可以将这些实体用作 JPA 变量 看 Activiti
  • 使用 xamarin 表单的 android 13 上的存储权限问题

    我在 Visual Studio 2022 的帮助下为我的 Android 项目使用 xamarin forms 当我将代码运行到我的移动 Android 13 时 我没有获得 Android 13 的弹出权限 我只是将 androidta