最初,我试图用targetSdkVersion 30更新我已经发布的应用程序,以符合Google的targetSdkVersion 33要求。这只是制造了各种各样的麻烦。我不得不更新我的IAP调用,以及Advert调用。我设法更新到新的API方法,并开始测试,却发现请求权限不再工作!(* 为沮丧咆哮道歉 *)。
我了解权限流;在AndroidManifest.xml中声明您需要的内容,然后检查是否shouldShowRequestPermissionRationale(),然后调用requestList()。最后在onRequestPermissionsResult()中处理用户响应。
在旧版本,Android 29(平板电脑)和Android 34(手机)上,一切都按预期工作。当启动应用程序时,文件权限对话框会在应用程序启动时显示。
现在有了更新的版本,Android 29(平板电脑),文件权限对话框显示,应用程序继续。与Android 34(手机)的文件权限对话框不显示,在调试时,onRequestPermissionsResult()方法立即被调用,并带有PERMISSION_DENIED响应。应用程序的行为就像用户选择了 Deny & Don 't Ask Again 用户永远不会有机会接受,因此应用程序会通知用户并关闭,因为保存和共享编辑过的照片是应用程序的主要功能。
让我困惑的是,同样的构建在Android 29上有效,但在Android 34上无效。所以我倾向于相信问题出在Android 34上,除非有一些额外的步骤需要使用Android 29上不需要的新API。
有没有其他人遇到过类似的问题?如果有,你是如何解决的?
编辑:在我的AppCompatActivity中,我请求:
String[] permissionList = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE };
requestPermissions( permissionList, READ_STORAGE_RESPONSE );
字符串
2条答案
按热度按时间c0vxltue1#
String[] permissionList = { Manifest.permission.READ_EXTERNAL_PROJECT,Manifest.permission.WRITE_EXTERNAL_PROJECT};
在Android 13+设备上,这些权限是不需要的,什么也不做。
不要在运行时问他们。
默认情况下,您的应用在外部存储上的所有公共目录中都具有写入权限。
wooyq4lh2#
了解Android 33及以上版本的变化:
**增强的权限管理:Android 33引入了更严格的权限处理,要求更明确的用户同意,并对敏感权限进行更清晰的理由解释。
*新增权限处理API: requestroute方法已弃用,建议使用新增的ActivityResultLauncher API请求权限。
**第1步:**确保您已在AndroidManifest.xml文件中声明了所需的READ_EXTERNAL_REPORT和WRITE_EXTERNAL_REPORT权限。
第二步
字符串
提供明确的理由:
1.如果shouldShowRequestPermissionRationale返回true,请在再次请求权限之前向用户解释为什么需要这些权限。
2.使用清晰简洁的对话框来解释权限的用途以及它们将如何使用户受益。
处理“不再问”案例:
1.f用户先前拒绝了权限并选择了“不再询问”,请将其引导至应用设置以手动授予权限。
2.提供有关如何导航到应用程序设置和启用权限的明确说明。
其他注意事项:
1.目标SDK版本:虽然与权限问题没有直接关系,但请确保您的应用的targetSdkVersion设置为33以符合Google的要求。
如果执行这些步骤后问题仍然存在,请提供有关您的代码和权限请求流程的更具体详细信息,以获得进一步帮助。