Android MediaStore掃描 & 向MediaStore中插入文件記錄

http://www.cnblogs.com/androidwsjisji/archive/2012/10/24/2737604.html

通知MediaStore掃描某個文件:

[java] view plaincopy
  1. private void scanSingleFile(String filePath) {  
  2.         if (filePath == null) {  
  3.             return;  
  4.         }  
  5. // broadcast to scan file  
  6.         boolean bmnt = Environment.getExternalStorageDirectory().getPath()  
  7.                 .startsWith("/mnt");  
  8.         bmnt = mDownloadDestination  
  9.                 .equalsIgnoreCase(UpDownloadUtils.DOWNLOAD_DEST_SDCARD) ? bmnt  
  10.                 : false;  
  11.         File file = new File(bmnt ? ("/mnt" + filePath) : filePath);  
  12.   
  13.         MediaScannerConnection.scanFile(mContext,  
  14.                 new String[] { file.toString() }, null,  
  15.                 new MediaScannerConnection.OnScanCompletedListener() {  
  16.                     @Override  
  17.                     public void onScanCompleted(String path, Uri uri) {  
  18.                       
  19.                         ContentResolver cr = mContext.getContentResolver();  
  20.                         long datemodified = 0;  
  21.                         long dateadded = 0;  
  22.                         Cursor cursor = cr.query(uri, nullnullnullnull);  
  23.                         if (cursor != null && cursor.moveToFirst()) {  
  24.                             datemodified = cursor.getLong(cursor  
  25.                                     .getColumnIndex(MediaStore.MediaColumns.DATE_MODIFIED));  
  26.                             dateadded = cursor.getLong(cursor  
  27.                                     .getColumnIndex(MediaStore.MediaColumns.DATE_ADDED));  
  28.                             cursor.close();  
  29.                         }  
  30.   
  31.                         ContentValues values = new ContentValues();  
  32.                         if (datemodified > 0  
  33.                                 && String.valueOf(datemodified).length() > 10) {  
  34.                             values.put(MediaStore.MediaColumns.DATE_MODIFIED,  
  35.                                     datemodified / 1000);  
  36.                         }  
  37.                         if (dateadded > 0  
  38.                                 && String.valueOf(dateadded).length() > 13) {  
  39.                             values.put(MediaStore.MediaColumns.DATE_ADDED,  
  40.                                     dateadded / 1000);  
  41.                         }  
  42.   
  43.                         if (values.size() > 0) {  
  44.                             cr.update(uri, values, nullnull);  
  45.                         }  
  46.                     }  
  47.                 });  
  48.     }  

向MediaStore中插入文件記錄

[java] view plaincopy
  1. ContentValues newValues = new ContentValues(6);  
  2.             String title = FileName.substring(0, pointIndex);  
  3.             newValues.put(MediaStore.Images.Media.TITLE,  
  4.                     FileName.substring(0, pointIndex));  
  5.             newValues.put(MediaStore.Images.Media.DISPLAY_NAME,  
  6.                     sourceFile.getName());  
  7.             newValues.put(MediaStore.Images.Media.DATA, sourceFile.getPath());  
  8.             newValues.put(MediaStore.Images.Media.DATE_MODIFIED,  
  9.                     System.currentTimeMillis() / 1000);  
  10.             newValues.put(MediaStore.Images.Media.SIZE, sourceFile.length());  
  11.             newValues.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");  
  12.             uri = contentResolver.insert(  
  13.                     MediaStore.Images.Media.EXTERNAL_CONTENT_URI, newValues);  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章