写了一个媒体扫描,发现没效果,是保存图片到本地的一个程序.
图片保存在/storage/emulated/0/xxxx/123.jpg
我扫描的是/storage/emulated/0/xxxx/,但是执行保存之后,发现在图库(系统图库)里面没有那个文件夹.不知道是因为什么,求解.
另外我想实现,第一次扫描文件夹,后面如果在新增文件(下载新的图片)就不用扫描文件夹了,请问怎么判断文件夹已经被扫描过了呢?
看了很多网上的很多都没法扫描,求可用扫描方法。
------解决思路----------------------
在读取之前不是有保存的么?能确定保存成功了且是保存在Environment.getExternalStorageDirectory().toString()+ "/xxxxxxx"这个目录下么?直接在设备上打开对应路径看看。
------解决思路----------------------
嗯,有些路径图库没扫描出来算正常吧。文件夹已经被扫描过估计只能自己保存了。
------解决思路----------------------
MediaScannerConnection.scanFile(mContext, new String[] {filePath}, null, null);
filepath 要更新的路径
------解决思路----------------------
在4.4之前和之后,google规定了不允许第三方应用向系统发送广播,所以,4.4+都无法进行扫描。
解决办法:
1:先做版本判断
public static boolean hasKitkat(){
//Build.VERSION.KITKAT--Android4.4
return Build.VERSION.SDK_INT >= 19;
}
2:浏览图片
public static void scanPhotos(String filePath, Context context) {
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri uri = Uri.fromFile(new File(filePath));
intent.setData(uri);
context.sendBroadcast(intent);
}
private void refreshPicture(){
if(hasKitkat()){
MediaScannerConnection.scanFile(this,
new String[] {currFilePath}, new String[]{ "image/*" },
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
sendBroadcast(new Intent(android.hardware.Camera.ACTION_NEW_PICTURE, uri));
sendBroadcast(new Intent("com.android.camera.NEW_PICTURE", uri));
}
});
scanPhotos(currFilePath, this);
}else{
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,Uri.parse("file://" + currFilePath)));
}
}
直接在调用refreshPicture()就可以了。