我的應用程序在SD卡的目錄中創建的照片,我想開畫廊吧。要做到這一點,我只需做到以下幾點:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivity(intent);
但它顯示設備中的每個圖片。是否可以只顯示目錄中的文件?
我的應用程序在SD卡的目錄中創建的照片,我想開畫廊吧。要做到這一點,我只需做到以下幾點:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivity(intent);
但它顯示設備中的每個圖片。是否可以只顯示目錄中的文件?
您只需要在您的活動中實施MediaScannerConnectionClient,然後您必須將該文件夾名稱中的文件名稱之一作爲SCAN_PATH的確切路徑,並且它將掃描該文件夾中包含的所有文件並將其打開建在畫廊。所以只需給出你的文件夾的名稱,你就會得到包括視頻在內的所有文件。如果你想打開僅適用於圖像改變FILE_TYPE="images/*"
public class sdActivity extends Activity implements MediaScannerConnectionClient{
public String[] allFiles;
private String SCAN_PATH ;
private static final String FILE_TYPE = "*/*";
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/youfoldername/");
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()+"/yourfoldername/"+allFiles[0];
Log.d("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 + "success"+conn);
if (uri != null)
{
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(uri);
startActivity(intent);
}
} finally
{
conn.disconnect();
conn = null;
}
}
}
我已回答了這個鏈接也Built-in gallery in specific folder上。
它不起作用,這一行:conn = new MediaScannerConnection(this,this);不正確,不能將第二個參數強制轉換爲MediaScannerConnectionClient。 – nonozor
@nonozor第二個屬於MediaScannerConnectionClient,如果您在活動中實施MediaScannerConnectionClient,則可以應用(this,this)。 – PiyushMishra
這只是打開其中一個圖片,但不是顯示目錄中圖片概覽的圖庫..... –
http://stackoverflow.com/questions/6074270/built-in-gallery-in-specific-folder 相同的重複的問題。 –