2013-08-31 40 views
0

我想打開我創建的文件夾中的所有圖像,但不在圖庫中。到目前爲止,我已經搜索並且已經有所作爲了。唯一的問題是,它只顯示圖片庫,顯示我要選擇哪個文件夾。它像它忽略了路徑和默認的畫廊。我在做什麼有什麼問題?請溫柔一些,我通常會搜索和搜索更多,但也許還不夠?以下是我正在處理的一部分內容。從目錄中打開圖像不在圖庫中

此外,我試過這裏的解決方案:Built-in gallery in specific folder,但它只顯示一個圖像,而不是目錄中的所有圖像。也許我需要回到這個並改變它的工作?

private void setIntentToSpecificFolder() { 
    String folderPath = Environment.getExternalStorageDirectory().toString() + "/com.qk.livewallpapertest/"; 
    //int folderBucketId = folderPath.toLowerCase().hashCode(); 
    //Uri targetUri = Media.EXTERNAL_CONTENT_URI.buildUpon().appendQueryParameter("bucketId", String.valueOf(folderBucketId)).build(); 
    Uri targetUri = Uri.parse(folderPath); 

    Log.v(TAG,"targetUri: " + getRealPathFromURI(targetUri) + "folderPath: " + folderPath); 

    Intent intent = new Intent(Intent.ACTION_PICK); 
    intent.setDataAndType(targetUri, "vnd.android.cursor.dir/image"); 
    startActivityForResult(intent,SELECT_PHOTO); 
} 
+0

當您使用startActivityForResult(意向,SELECT_PHOTO);,你怎麼弄的攝取的圖像? –

+0

嗯,挑選照片不是問題。我已經有了一個用戶選擇圖像的過程,我調整了大小並將照片存儲在不同的文件夾中。我試圖做的過程是檢索該文件夾中的照片,並讓他們選擇任何照片刪除,編輯...等。出於某種原因,當意圖啓動時,它默認爲畫廊。 – user2736216

+0

如果您不希望它選擇,爲什麼您的操作設置爲ACTION_PICK? –

回答

0

當你使用像ACTION_PICK一個動作,你是隱移交控制到另一個應用程序,就像一個鏈接到第三方網站的控制交給另一網站。

在這種情況下,不需要設備具有任何可以從特定目錄執行ACTION_PICK的任何操作。一個設備可能有零個,一個或N個應用程序能夠做到這一點。這些應用程序和它們的作用取決於它們各自的作者。

因此,如果您的應用程序的功能取決於用戶從特定目錄中選取圖像的能力,則需要自行實施。如果這是一個很好的,但不是必需的,你可以堅持ACTION_PICK,但建議用戶安裝你確定提供你想要的結果的文件瀏覽器應用程序。

+0

感謝您的解釋。這實際上很有意義。我想這將是公認的答案,因爲我不明白ACTION_PICK是什麼。某種程度上,你可以說我沒有做足夠的搜索。 – user2736216

0

這裏是一個簡化的一個

private MediaScannerConnection conn; 
private void notifySystemWithImage(final File imageFile) { 

     conn = new MediaScannerConnection(this, new MediaScannerConnectionClient() { 

     @Override 
     public void onScanCompleted(String path, Uri uri) { 

      try { 
       if (uri != null) { 
        Intent intent = new Intent(Intent.ACTION_VIEW); 
        intent.setDataAndType(uri, "image/*"); 
        startActivity(intent); 
       } 
      } finally { 
       conn.disconnect(); 
       conn = null; 
      } 
     } 

     @Override 
     public void onMediaScannerConnected() { 
      conn.scanFile(imageFile.getAbsolutePath(), "*/*"); 

     } 
    }); 

    conn.connect(); 
} 
相關問題