2013-12-09 75 views
2

我的默認相機應用程序將照片保存到/ mnt/sdcard2 /照片文件夾。 說,我怎麼能通過代碼檢測到這個文件夾?檢測相機照片文件夾

我發現這個代碼,但它並不能幫助我:

TextView tv = new TextView(this); 
// Returns /mnt/sdcard/Pictures 
tv.setText(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath()); 
// Returns /mnt/sdcard/DCIM 
tv.append("\n" + Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath()); 
setContentView(tv); 

回答

4

如果沒有Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)也不Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)返回設備的默認攝像頭應用程序使用的目錄,用戶沒有指定一個特定的位置,那麼這款相機應用的作者就是白癡。 默認在沒有用戶干預的情況下,相機應用應將其照片存儲在默認目錄(通常爲DIRECTORY_DCIM默認

由於任何應用程序可以選擇任何地方想要存儲其文件,有沒有辦法提前確定時間:

  • 設備的默認攝像頭應用程序的作者是白癡

  • 用戶選擇了不同的相機應用程序,可能或可能不是由傻瓜寫的,因爲該特定的相機應用程序有理由不將圖像存儲在特定位置

  • 用戶配置了相機應用程序(默認或其他方式)來存儲照片在其他位置

督察,還有什麼可以真正做到,除了修改你的計劃不承擔照片駐留在任何給定的位置。

+0

我改變相機設置在方便的地方保存照片給我。 我認爲應用程序將其存儲在其設置中,並且每個應用程序的設置都不相同。我意識到他問了一個愚蠢的問題。你已經幫我找到了解決我的問題的方法。 – Ifgeny87

+0

@CommonsWare:我明白你的意思。所以解決方案應該是加載所有文件夾裏面都有圖像,對嗎?你知道該怎麼辦? –

1

做這樣的事情:

imageView = (ImageView)findViewById(R.id.imageView1); 

    File file = null; 
    if (isExternalSDCard()) { 
     file = new File(
       Environment 
         .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "photo.jpg"); 
    } else { 
     file = new File(Environment.getDataDirectory(), 
       Environment.DIRECTORY_PICTURES); 
     if (!file.exists()) { 
      file.mkdirs(); 
     } 
     file = new File(file, "photo.jpg"); 
    } 
    if (file != null && file.exists()) { 
     // First decode with inJustDecodeBounds=true to check dimensions 
     final BitmapFactory.Options options = new BitmapFactory.Options(); 
     options.inJustDecodeBounds = true; 
     BitmapFactory.decodeFile(file.getAbsolutePath(), options); 
     // Decode bitmap with inSampleSize set 
     options.inJustDecodeBounds = false; 

     Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath(), 
       options); 
     imageView.setImageBitmap(bitmap); 
    } 

photo.jpg這是你的形象的名字。

在目錄中的所有文件:

File[] filesPhotos = Environment.getExternalStoragePublicDirectory(
      Environment.DIRECTORY_PICTURES).listFiles(); 

^^

我的代碼isExternalSDCard:

private static boolean isExternalSDCard() { 
    boolean mExternalStorageAvailable = false; 
    boolean mExternalStorageWriteable = false; 
    String state = Environment.getExternalStorageState(); 

    if (Environment.MEDIA_MOUNTED.equals(state)) { 
     // We can read and write the media 
     mExternalStorageAvailable = mExternalStorageWriteable = true; 
    } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { 
     // We can only read the media 
     mExternalStorageAvailable = true; 
     mExternalStorageWriteable = false; 
    } else { 
     // Something else is wrong. It may be one of many other states, but 
     // all we need 
     // to know is we can neither read nor write 
     mExternalStorageAvailable = mExternalStorageWriteable = false; 
    } 
    return mExternalStorageAvailable && mExternalStorageWriteable; 
} 
相關問題