android获取多媒体图片路径,解析 Android R(11) getContentResolver 获取多媒体图片

10月1 假期归来,回顾线上app 功能及bug 回馈检查时,发现 Android 11 系统 app 出现的一系列问题

1、首先是原有使用反射获取的 Toast view  出现空, 通过反射获取 状态栏的view 出现空异常

2、使用第三方的PictureSelector 图片选择器 出现异常,不能正常加载相册图片

针对以上两个问题展开排查

1、具体问题应该是反射路径或地址修正了,可使用以下方法

public static int getStatusBarHeight(Context context) {

// int statusBarHeight = 0;

// try {

//

// @SuppressLint("PrivateApi") Class> c = Class.forName("com.android.internal.R$dimen");

// Object o = c.newInstance();

// Field field = c.getField("status_bar_height");

// int x = (Integer) field.get(o);

// statusBarHeight = context.getApplicationContext().getResources().getDimensionPixelSize(x);

// } catch (Exception e) {

// e.printStackTrace();

// }

// return statusBarHeight == 0 ? dip2px(context, 25) : statusBarHeight;

int result = 0;

int resourceId = Resources.getSystem().getIdentifier("status_bar_height", "dimen", "android");

if (resourceId > 0) {

result = Resources.getSystem().getDimensionPixelSize(resourceId);

}

return result;

}

2、具体问题是,getContentResolver().query 的 sortOrder 参数 只支持 排序,不再支持 order by ,group by 等语句,

查看源码可知

af2bd7c845621ac4888d70e2be874cb2.png

c85b00a08969461b94cda89b2cd17ba7.png

最终把所有方法参数 转换伟bundle  传给 query 进行查询

51bf8f0fa02aa76724526904cdcc5e0e.png

跟踪代码后 Android R  新增了  ContentResolver#QUERY_ARG_SQL_LIMIT  条件,那么是不是咱们就可以把

limit 语句放到 budle 呢?

具体修改方案如下:

a7802ac6e5cabc20b56bdf1e515fd2d2.png

0335f52e3e3d45cac388122f8569f982.png

本文地址:https://blog.csdn.net/wmyasw/article/details/108993757

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值