Android仅从库中隐藏图像
我创建了一个可以查看图像的应用程序。我面临的问题是,当我在文件夹中使用“.nomedia”时,它会将图像从库中隐藏,并且图像也会隐藏在我的应用程序中。我需要一个方法的帮助下,图像可以保持从画廊隐藏,但在我的应用程序中显示。我正在使用文件夹的路径访问图像 代码:Android仅从库中隐藏图像,android,image-gallery,Android,Image Gallery,我创建了一个可以查看图像的应用程序。我面临的问题是,当我在文件夹中使用“.nomedia”时,它会将图像从库中隐藏,并且图像也会隐藏在我的应用程序中。我需要一个方法的帮助下,图像可以保持从画廊隐藏,但在我的应用程序中显示。我正在使用文件夹的路径访问图像 代码: 公共类SdActivity扩展活动实现 MediaScannerConnectionClient{ 公共字符串[]所有文件; 私有字符串扫描路径; 私有静态最终字符串文件_TYPE=“*/*”; 专用MediaScannerConnect
公共类SdActivity扩展活动实现
MediaScannerConnectionClient{
公共字符串[]所有文件;
私有字符串扫描路径;
私有静态最终字符串文件_TYPE=“*/*”;
专用MediaScannerConnectionConn;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
文件夹=新文件(“/sdcard/DCIM”);
allFiles=folder.list();
//uriAllFiles=newuri[allFiles.length];
对于(int i=0;i
在应用程序中使用标准文件IO操作。除此之外,你还需要更具体地说明你的应用程序是如何访问图像文件的。sdcard中有一个文件夹,例如DCIM。nomedia文件被复制到该文件夹中。现在DCIM图像从Gallery中隐藏,但它们也从我的应用程序中隐藏。这并不能解释您如何访问应用程序中的图像文件。此外,编辑问题以澄清;先生,我上传了我的代码。MediaScannerConnection
将忽略带有.nomedia标记文件的目录。相反,只需使用标准文件IO获取文件信息,就像您对allFiles
所做的那样。
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/DCIM");
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.buttonLoadPicture);
scanBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
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;
}
}
}