Code Bye

Android媒体扫描怎么判断文件夹已经被扫描

写了一个媒体扫描,发现没效果,是保存图片到本地的一个程序.
图片保存在/storage/emulated/0/xxxx/123.jpg
扫描的是/storage/emulated/0/xxxx/,但是执行保存之后,发现在图库(系统图库)里面没有那个文件夹.不知道是因为什么,求解.
另外我想实现,第一次扫描文件夹,后面如果在新增文件(下载新的图片)就不用扫描文件夹了,请问怎么判断文件夹已经被扫描过了呢?
看了很多网上的很多都没法扫描,求可用扫描方法。
解决方案:10分
在读取之前不是有保存的么?能确定保存成功了且是保存在Environment.getExternalStorageDirectory().toString()+ “/xxxxxxx”这个目录下么?直接在设备上打开对应路径看看。
解决方案:10分

嗯,有些路径图库没扫描出来算正常吧。文件夹已经被扫描过估计只能自己保存了。

解决方案:10分
MediaScannerConnection.scanFile(mContext, new String[] {filePath}, null, null);
filepath 要更新的路径
解决方案:10分
在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()就可以了。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Android媒体扫描怎么判断文件夹已经被扫描