2013-01-10 24 views
0

我在移動設備的SD卡中存儲位圖,然後我有另一種方法列出了保存我的位圖的文件夾中存在的所有文件。問題是,當圖像存儲時,即使我檢查它們是否真的存在於文件夾中,我的代碼列出來自該文件夾的圖像不會返回這些圖像,它通常會在幾次後顯示它們,我利用應用程序。誰能幫我這個?你可以在下面找到我的代碼。當查詢同一文件夾中的所有文件時,不會顯示存儲的位圖文件

這是用於存儲位圖

imagesFolder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "ILoveKitties"); 

if(!imagesFolder.exists()) 
    imagesFolder.mkdirs(); 
int imageNum; 
if(imagesFolder.list()==null) 
    imageNum = 1; 
else 
    imageNum = imagesFolder.list().length + 1; 

String fileName = "appname_" + String.valueOf(imageNum) + ".jpg"; 
output = new File(imagesFolder, fileName); 
while(output.exists()){ 
    imageNum++; 
    fileName = "appname_" + String.valueOf(imageNum) + ".jpg"; 
    output = new File(imagesFolder, fileName); 
} 

OutputStream fOut = new FileOutputStream(output); 
merged.compress(Bitmap.CompressFormat.JPEG, 100, fOut); 
fOut.flush(); 
fOut.close(); 
fOut = null; 
saved = true; 
savedFilePath = "file://" + output.getCanonicalPath(); 

這是用於檢索文件的列表文件夾中

boolean isSDPresent = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED); 
if(isSDPresent) { 
    String[] projection = {MediaStore.Images.Media.DATA}; 
    cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
      projection, 
      MediaStore.Images.Media.DATA + " like ? ", 
      new String[] {"%APPNAME%"}, 
      null); 
    columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 

    File testFileAvailability; 
    for(int i=cursor.getCount()-1; i>=0; i--){ 
     cursor.moveToPosition(i); 
     // get image filename 
     testFileAvailability = new File("file://" + cursor.getString(columnIndex)); 
     if(testFileAvailability.exists()){ 
      listImagePath.add("file://" + cursor.getString(columnIndex)); 
     } 

    } 
} 

然後我使用路徑來顯示圖像。

回答

1

好吧,一旦你將文件存儲在設備存儲器中,只需就會觸發媒體掃描器在MediaStore中插入文件條目,那麼你的應用程序應該能夠獲得文件路徑。

要觸發媒體掃描儀使用下面的代碼:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()))); 

事實上,你有可能引發媒體掃描儀讓您有當前存儲的文件條目。 Android設備在重啓時執行此操作。或者您啓動任何本機相機或圖庫應用程序(如果他們實施了它)。

相關問題