2011-12-08 69 views
2

我想使用默認的Android畫廊應用程序在我的程序中打開特定文件夾的圖像。我已經使用在後的PIYUSH米什拉但問題給出這個代碼我寫的代碼如何使用Android默認畫廊打開特定文件夾圖像

public class GalleryActivity extends Activity implements MediaScannerConnectionClient{ 
    /** Called when the activity is first created. */ 
    public String[] allFiles; 
    private String SCAN_PATH ; 
    private static final String FILE_TYPE = "images/*"; 

    private MediaScannerConnection conn; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     File folder = new File("/sdcard/images/"); 
     allFiles = folder.list(); 
     // uriAllFiles= new Uri[allFiles.length]; 
     for(int i=0;i<allFiles.length;i++) 
     { 
      Log.d("all file path"+i, allFiles[i]+allFiles.length); 
     } 
     // Uri uri= Uri.fromFile(new File(Environment.getExternalStorageDirectory().toString()+"/yourfoldername/"+allFiles[0])); 
     SCAN_PATH=Environment.getExternalStorageDirectory().toString()+"/images/"+allFiles[0]; 
     Log.e("SCAN PATH", "Scan Path " + SCAN_PATH); 
     Button scanBtn = (Button)findViewById(R.id.scanBtn); 
     scanBtn.setOnClickListener(new OnClickListener(){ 
     @Override  
     public void onClick(View v) { 
      startScan(); 
     }}); 
     } 
     private void startScan() 
     { 
     Log.d("Connected","success"+conn); 
     if(conn!=null) 
     { 
     conn.disconnect(); 
     } 
     conn = new MediaScannerConnection(this,this); 
     conn.connect(); 
     } 
    @Override 
    public void onMediaScannerConnected() { 
     Log.d("onMediaScannerConnected","success"+conn); 
     conn.scanFile(SCAN_PATH, FILE_TYPE);  
    } 
    @Override 
    public void onScanCompleted(String path, Uri uri) { 
     try { 
      Log.d("onScanCompleted",uri.toString() + "success"+conn); 
      if (uri != null)     
      { 

      Intent intent = new Intent(Intent.ACTION_DEFAULT); 
      intent.setData(uri); 
      startActivity(intent); 
      } 
      } finally 

      { 
      conn.disconnect(); 
      conn = null; 
      } 


} 
} 

以下,但這段代碼也顯示了當前設備上的其他圖像

+1

使用此ü需要發送braodcast到系統更新畫廊,否則你將無法成功,我試着這個代碼和它的工作非常好。 – PiyushMishra

回答

0

我認爲這將有助於Gallery with Folder Filter

即使當我試圖爲this..I未能成功找到that..had搜索了很多,但沒有使用方式..使用此之前

+0

但許多應用程序是否這樣做這件事 – Piyush

+0

我也嘗試了相同的代碼,你可以看到,但它顯示其他圖像也可能是我做錯了,如果你找到正確的方式,請回復。 – Piyush

+0

有沒有人可以幫助我。 – Piyush

0

廣播方式發送更新圖庫。只需複製粘貼即可。

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

我有同樣的問題,我想推出畫廊到特定的文件夾與視頻和圖片。

有了這個,我似乎總是得到:ActivityNotFoundException

基於其他 posts

,我可以啓動畫廊,而不是到特定文件夾,我也不能推出兩個視頻和圖片。把這根頭髮拉出來。一直在嘗試使用縮略圖實現網格視圖,這可能是一個選項。但爲什麼要經歷創建,線程化和緩存縮略圖的麻煩,這是Gallery應用程序所做的事情。

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_PICK); 

intent.setData(uri); 
intent.setType("image/*"); 

startActivityForResult(intent, 0); 
+0

總是使用setDataAndType而不是數據和類型分離,因爲每一個都會使另一個無效。 – JacksOnF1re