Android中拍照和选择图片结合DialogFrament遇到的问题一

在这里插入图片描述在网上找到的代码
private String getImagePath(Uri uri, String selection) { String path = null; //通过uri和selection来获取图片的真实路径 Cursor cursor = getActivity().getContentResolver().query(uri, null, selection, null, null); if (cursor != null) { if (cursor.moveToFirst()) { path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA)); } cursor.close(); } return path; }

        由于工作需求,需要完成一个拍照和实现图片选择功能,于是开开心的在网上搜索了一份代码,然后准备进行加工。完成之后发现拍照什么的没有问题,然后从图库选择图片也没有问题,但到了从文件夹选择图片程序直接就崩溃了,好吧,大写的懵比。问题的日志看下图:

截取主要内容有两个提示:

1、java.lang.RuntimeException: Failure delivering result ResultInfo{who=null,request=196610,result=-1,data=Intent{dat=content://com.android.fileexplorer.myprovider/external_files/aHYshipin/image/head.jpg flg=0x1 }} to activity 表示返回的资源有问题

2、Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it. 表示你的游标初始化不正确,导致不能从CursorWindow获取到数据。

        遇到问题,当然是继续百度了,然后先百度第一个提示,然后就没有然后了,再接着百度第二个提示,一看全是告诉你查询数据库的时候,出现了问题,接着思考了一下,继续百度Android通过文件夹选择图片出现问题,还是没有结果,可能是我百度的姿势不对。中间的搜索过程和验证还是花费了一个小时多,挺折磨人的。我想百度不行,那就只有自己解决了,通过前面的查询留意到Cursor的查询出现问题的可能性是:

错误1:请求的字段在数据库的表中不存在,一般是大小写没写对。

错误2:编程的中途改变表的字段,实际字段并没有改变,解决方法是卸载当前版本,再安装调试。

错误3:查询语句中并没有查询该字段,使用的时候却要得到该字段的值。

        然后查看cursor的用法,知道了getActivity().getContentResolver().query里面参数表达的意思,第二个参数表示查询条件,空的时候查询所有列,嗯嗯好像有点感觉了。第三个参数表示查询条件,就是where之后的部分可以未null

        然后查看MediaStore.Images.Media.DATA的相关内容,发现这只是表示了图片的路径,想想查询路径没有问题。 然后仔细分析,会发现报错就是说MediaStore.Images.Media.DATA列没有找到,那么我如果只找这一列呢。将代码改成:

Cursor cursor = getActivity().getContentResolver().query(uri, new String[]{MediaStore.Images.Media.DATA},selection,null,null}

        再进行尝试,发现问题已经解决了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值