B4A 动态权限申请时遇到的问题与解决方法

在B4A中请求权限分两部分:

1、在manifest中添加相应的权限请求。

在这里插入图片描述
通过 AddPermission(XXXXXX) 添加相应权限
添加读取存储的权限

普通权限如网络权限,加到这一步就ok了,一些有风险的权限还需要第二步

2、程序中动态请求由用户授权
Sub Button1_Click
	'点击按钮获取授权
	Private rp As RuntimePermissions '需要添加自带的同名库文件 
	rp.CheckAndRequest(rp.PERMISSION_READ_EXTERNAL_STORAGE)
	Wait For Activity_PermissionResult (permission As String, Result As Boolean)
	If Result = False Then
		Log("No permission!")
		Return
	End If
	'下面是授权后的代码
End Sub

ok,迎来了第一个执行错误
在这里插入图片描述
可以看得出来,这个错误是因为用到了 androidx/core/content/ContextCompat 这个类
我的手机系统版本是华为鸿蒙2.0 、模拟器系统版本是安卓12
B4A的默认包中没有支持 androidx.core 的,需要我们自己下载,于是从gradle的缓存中Copy了一份 androidx.core-1.3.0.aar 放入B4A安装目录下面的 Libraries 文件夹中,再次编译,再次报编译错误。
在这里插入图片描述
从截图中可以看到 很多 m2repository\com\android\support 的字样,于是我用压缩软件打开 androidx.core-1.3.0.aar 的包,查看发现,里面真的有 android.support.v4 这个包组,于是猜测可能和B4A自带的包组冲突,于是删掉了 androidx.core-1.3.0.aar 中的 android 目录 ,仅保留 androidx。
在这里插入图片描述
再次编译迎来的期盼的权限申请界面。
在这里插入图片描述

B4A 重新编译的时候记得要先清除项目
只要是类库发生变化,必须清除,否则会报错

在这里插入图片描述
最后提醒下,android 10 以后不用想要获取设备信息了,google禁止三方应用获取该权限,无限报错了😂
PERMISSION_READ_PHONE_STATE 废了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值