Android4.4 ContentResolver查询图片无效 及 图库删除 添加图片后,ContentResolver不更新的问题解决...
問題背景:
參考鏈接?做了一個圖片瀏覽,用ContentResolver掃描圖庫照片。且嚴格依照時間拍攝順序排好序顯示在listview里。例如以下圖所看到的:
遇到的問題是在4.2的手機上能正常顯示,可是新增了照片,這個掃描依然么變化。實在是惱火。還有一個嚴重的問題是,在4.4的手機上,一張圖片都跑不起來。
大爺的,真是坑爹到家了。浪費我好幾個小時。后來差點兒要放棄了,無意中瀏覽自己曾經寫的博客,才發現真正的原因是少了一個權限。
? ? <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
須要有以下兩個權限。才干在發廣播更新時起到作用。
尤其是第二個權限。沒這個權限在4.2的手機上能夠瀏覽但不會更新,在4.4全然掃描不到圖片。
但奇怪的是二種情況下都不會報異常。
查詢的關鍵語句是:
Uri mImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;Log.i("yanguoqi", "mImageUri = " + mImageUri.getPath());ContentResolver mContentResolver = MainActivity.this.getContentResolver();//僅僅查詢jpeg的圖片Cursor mCursor = mContentResolver.query(mImageUri, null,MediaStore.Images.Media.MIME_TYPE + "=?",new String[] { "image/jpeg"}, MediaStore.Images.Media.DATE_TAKEN);mCursor.moveToLast();int num = mCursor.getCount();do{//獲取圖片的路徑String path = mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media.DATA));if(path.contains("/DCIM/Camera")){imgPaths.add(path);}}while (mCursor.moveToPrevious());mCursor.close();1、查詢時mContentResolver.query(mImageUri。。。
)這個uri僅僅能填寫Uri mImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;構造出來的URI。而不能隨便寫個路徑構造個URI,這塊著實詭異;
2、所以為了過濾。僅僅能掃描后通過if(path.contains("/DCIM/Camera"))這句話來過濾圖庫以下的文件;
3.為了實現嚴格依照拍照時間排序,光在查詢里寫MediaStore.Images.Media.DATE_TAKEN還不中。這么寫查出來的cursor第一個確實是最新的。可是通過List.add操作。反而把第一個排到最后了。因此我先將cursor移動最后,之所以do在前面while在后,是為了不漏掉第一個圖片。
4、每次查詢前,應該發廣播更新下:
private void updateGallery(){Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); //, MediaStore.Images.Media.EXTERNAL_CONTENT_URIString path = Environment.getExternalStorageDirectory() + "/DCIM/Camera"; Uri uri = Uri.fromFile(new File(path)); intent.setData(uri); this.sendBroadcast(intent); }在發廣播處,能夠指定path路徑的uri,當然也能夠傳 MediaStore.Images.Media.EXTERNAL_CONTENT_URI
。
轉載于:https://www.cnblogs.com/mqxnongmin/p/10658139.html
總結
以上是生活随笔為你收集整理的Android4.4 ContentResolver查询图片无效 及 图库删除 添加图片后,ContentResolver不更新的问题解决...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql语句优化(二)
- 下一篇: Nginx 完整安装篇