日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

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

發布時間:2023/12/8 windows 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android系统通过图片绝对路径获取URI的三种方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

老馬的技術博客

android系統通過圖片絕對路徑獲取URI的三種方法

最近做項目要通過圖片的絕對路徑找到圖片的URI,然后刪除圖片,小小總結一下獲取URI的方法,親自試驗在

android?4.1.3的系統上都是可用的。

?

1.將所有的圖片路徑取出,遍歷比較找到需要的路徑,取出URI,效率較低

其中?MediaStore.MediaColumns.DATA?字段存的就是圖片的絕對路徑,

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

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

?2?Uri?mImageUri?=?null;

?3?Cursor?cursor?=?managedQuery(

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

?5????????????????????????????????MediaStore.Images.Media.DEFAULT_SORT_ORDER);

?6?cursor.moveToFirst();

?7?

?8?while?(!cursor.isAfterLast())?{

?9?????????????????????????String?data?=?cursor.getString(cursor

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

11?????????????????????????if?(picPath.equals(data))?{

12?????????????????????????????????int?ringtoneID?=?cursor.getInt(cursor

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

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

15?????????????????????????????????break;

16????????????????????????}

17????????????????????????cursor.moveToNext();

18?}

?

2.直接從媒體數據庫根據字段取出相應的記錄,效率較高

1?//TYLT:?add?by?duanyf?20121027?start

?2?????????????????String?type?=?Utils.ensureNotNull(intent.getType());

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

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

?5?????????????????????String?path?=?uri.getEncodedPath();

?6?????????????????????Log.d(TAG,?"path1?is?"?+?path);

?7?????????????????????if?(path?!=?null)?{

?8?????????????????????????path?=?Uri.decode(path);

?9?????????????????????????Log.d(TAG,?"path2?is?"?+?path);

10?????????????????????????ContentResolver?cr?=?this.getContentResolver();

11?????????????????????????StringBuffer?buff?=?new?StringBuffer();

12?????????????????????????buff.append("(")

13????????????????????????????????.append(Images.ImageColumns.DATA)

14?????????????????????????????????.append("=")

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

16?????????????????????????????????.append(")");

17?????????????????????????Cursor?cur?=?cr.query(

18????????????????????????????????Images.Media.EXTERNAL_CONTENT_URI,

19?????????????????????????????????new?String[]?{?Images.ImageColumns._ID?},

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

21?????????????????????????int?index?=?0;

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

23????????????????????????????????.moveToNext())?{

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

25?????????????????????????????//?set?_id?value

26?????????????????????????????index?=?cur.getInt(index);

27????????????????????????}

28?????????????????????????if?(index?==?0)?{

29?????????????????????????????//do?nothing

30?????????????????????????}?else?{

31?????????????????????????????Uri?uri_temp?=?Uri

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

33?????????????????????????????????????????????+?index);

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

35?????????????????????????????if?(uri_temp?!=?null)?{

36?????????????????????????????????uri?=?uri_temp;

37????????????????????????????}

38????????????????????????}

39????????????????????}

40????????????????}

41?????????????????//TYLT:?add?by?duanyf?20121027?end

?

3.直接根據路徑通過?ContentProvider?的?delete()?方法刪除圖片,兩行代碼搞定,效率最高

1?String?params[]?=?new?String[]{filepath};

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

?

PS:通過URI刪除圖片可以刪除媒體庫的信息和縮略圖一并刪除,不留痕跡,如果直接通過路徑刪除文件會刪除不干凈

?


總結

以上是生活随笔為你收集整理的android系统通过图片绝对路径获取URI的三种方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。