2014-07-17 50 views
1

我正在開發一個簡單的圖庫應用程序,其中我搜索包含圖像的文件夾,然後顯示該特定文件夾的圖像。首先,我使用Environment.getExternalStorageDirectory(),然後遞歸搜索具有圖像的文件夾。它工作的很好的模擬器和設備。當我的客戶端在Nexus 4上安裝應用程序時,無法加載任何內容。我看到一些說Nexus系列沒有任何外部SD插槽的帖子。我沒有用於調試的Nexus 4,客戶端也是非技術型的。他可以自己排查問題的原因。任何人都可以在這方面提供幫助嗎?我認爲問題出在Environment.getExternalStorageDirectory()調用中,這不適用於Nexus。任何想法如何解決這個問題? 這裏是代碼剪斷我使用:獲取Nexus 4上的所有圖庫圖像

private File createImageFile() throws IOException { 
     // Create an image file name 
     String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
     String imageFileName = "JPEG_" + timeStamp + "_"; 
     File cacheDir = null; 
     if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) { 
      cacheDir=new File(android.os.Environment.getExternalStorageDirectory().getAbsolutePath(), "MyImages"); 
     } 
     else { 
      cacheDir = getCacheDir(); 
     } 
     if(!cacheDir.exists()) { 
      cacheDir.mkdir(); 
     } 
//  File storageDir = Environment.getExternalStoragePublicDirectory(
//    Environment.DIRECTORY_PICTURES); 
     File image = File.createTempFile(
       imageFileName, /* prefix */ 
       ".jpg",   /* suffix */ 
       cacheDir  /* directory */ 
       ); 

     // Save a file: path for use with ACTION_VIEW intents 
     mCurrentPhotoPath = "" + image.getAbsolutePath(); 
     return image; 
    } 

    public void dispatchTakePictureIntent() { 
     Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     // Ensure that there's a camera activity to handle the intent 
     if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
      // Create the File where the photo should go 
      File photoFile = null; 
      try { 
       photoFile = createImageFile(); 
      } catch (IOException ex) { 
       // Error occurred while creating the File 
       ex.printStackTrace(); 
      } 
      // Continue only if the File was successfully created 
      if (photoFile != null) { 
       takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, 
         Uri.fromFile(photoFile)); 
       startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO); 
      } 
     } 
    } 

在這裏,我已經加入清單的權限:

<uses-permission 
    android:name="android.permission.WRITE_EXTERNAL_STORAGE" 
    android:maxSdkVersion="18" /> 

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 

<uses-feature 
    android:name="android.hardware.camera" 
    android:required="true" /> 

謝謝!

+0

請參閱:http://stackoverflow.com/questions/7616974/how-to-check-internal-and-external-storage-if-exist – Shadesblade

回答

0

我想你應該嘗試一下MediaStore.Images組件。使用光標加載圖像。見文檔:http://developer.android.com/reference/android/provider/MediaStore.html

+0

是的,我不得不改變我的方法媒體查詢,它工作正常。但現在我面臨另一個問題。該應用程序具有使用相機捕捉照片的功能。我正在嘗試創建文件,然後將文件信息傳遞給相機意圖。再次在其他設備上工作,但在Nexus 4上遇到問題。應用程序無法創建文件。我試過環境。 getexternalstoragedirextory和getCacheDir都失敗了。任何想法如何在Nexus系列中爲相機意圖創建文件...? –

+0

仔細檢查您是否在清單中請求正確的權限,並給我們一些LogCat塗鴉... :) –

+0

我已更新我的問題。請看看它。另外我沒有Nexus 4手機。所以我不能在這裏提供LogCat輸出。謝謝 –

相關問題