1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > android系统通过图片绝对路径获取URI的三种方法

android系统通过图片绝对路径获取URI的三种方法

时间:2023-05-20 00:48:33

相关推荐

android系统通过图片绝对路径获取URI的三种方法

老马的技术博客

android系统通过图片绝对路径获取URI的三种方法

最近做项目要通过图片的绝对路径找到图片的URI,然后删除图片,小小总结一下获取URI的方法,亲自试验在

android4.1.3的系统上都是可用的。

1.将所有的图片路径取出,遍历比较找到需要的路径,取出URI,效率较低

其中MediaStore.MediaColumns.DATA字段存的就是图片的绝对路径,

最后mImageUri得到的就是图片的URI

1UrimUri=Uri.parse("content://media/external/images/media");

2UrimImageUri=null;

3Cursorcursor=managedQuery(

4MediaStore.Images.Media.EXTERNAL_CONTENT_URI,null,null,null,

5MediaStore.Images.Media.DEFAULT_SORT_ORDER);

6cursor.moveToFirst();

7

8while(!cursor.isAfterLast()){

9Stringdata=cursor.getString(cursor

10.getColumnIndex(MediaStore.MediaColumns.DATA));

11if(picPath.equals(data)){

12intringtoneID=cursor.getInt(cursor

13.getColumnIndex(MediaStore.MediaColumns._ID));

14mImageUri=Uri.withAppendedPath(mUri,""+ringtoneID);

15break;

16}

17cursor.moveToNext();

18}

2.直接从媒体数据库根据字段取出相应的记录,效率较高

1//TYLT:addbyduanyf1027start

2Stringtype=Utils.ensureNotNull(intent.getType());

3Log.d(TAG,"uriis"+uri);

4if(uri.getScheme().equals("file")&&(type.contains("image/"))){

5Stringpath=uri.getEncodedPath();

6Log.d(TAG,"path1is"+path);

7if(path!=null){

8path=Uri.decode(path);

9Log.d(TAG,"path2is"+path);

10ContentResolvercr=this.getContentResolver();

11StringBufferbuff=newStringBuffer();

12buff.append("(")

13.append(Images.ImageColumns.DATA)

14.append("=")

15.append("'"+path+"'")

16.append(")");

17Cursorcur=cr.query(

18Images.Media.EXTERNAL_CONTENT_URI,

19newString[]{Images.ImageColumns._ID},

20buff.toString(),null,null);

21intindex=0;

22for(cur.moveToFirst();!cur.isAfterLast();cur

23.moveToNext()){

24index=cur.getColumnIndex(Images.ImageColumns._ID);

25//set_idvalue

26index=cur.getInt(index);

27}

28if(index==0){

29//donothing

30}else{

31Uriuri_temp=Uri

32.parse("content://media/external/images/media/"

33+index);

34Log.d(TAG,"uri_tempis"+uri_temp);

35if(uri_temp!=null){

36uri=uri_temp;

37}

38}

39}

40}

41//TYLT:addbyduanyf1027end

3.直接根据路径通过ContentProvider的delete()方法删除图片,两行代码搞定,效率最高

1Stringparams[]=newString[]{filepath};

2ctx.getContentResolver().delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,MediaStore.Images.Media.DATA+"LIKE?",params);

PS:通过URI删除图片可以删除媒体库的信息和缩略图一并删除,不留痕迹,如果直接通过路径删除文件会删除不干净

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。