android - 我尝试扫描 SD 卡中的媒体文件并刷新它

标签 android

我使用下面的代码获取图像文件路径及其缩略图。

String[] projection = {MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA, MediaStore.Images.ImageColumns.DATA};  
Cursor cursor = managedQuery( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null, null, MediaStore.Images.Media._ID); 
int count = cursor.getCount();
int image_column_index = cursor.getColumnIndex(MediaStore.Images.Media._ID);
int image_path_index = cursor.getColumnIndex(MediaStore.Images.Media.DATA);
int i;
for(i = 0; i < count; i++) {
cursor.moveToPosition(i);
int id = cursor.getInt(image_column_index);
String p = cursor.getString(image_path_index);
Bitmap b = MediaStore.Images.Thumbnails.getThumbnail(getApplicationContext().getContentResolver(), id, MediaStore.Images.Thumbnails.MICRO_KIND, null);
}

我尝试用下面的代码在文件被修改后刷新数据库。

Intent scanIntent = new Intent(Intent.ACTION_MEDIA_MOUNTED);
scanIntent.setData(Uri.fromFile(new File(Environment.getExternalStorageDirectory().getPath())));
sendBroadcast(scanIntent);

但是文件数量越多,花费的时间也越多。 所以我想确认它在下类后完成。 我怎样才能知道它完成了?

最佳答案

在下面运行:

IntentFilter intentfilter = new IntentFilter(Intent.ACTION_MEDIA_SCANNER_STARTED);
intentfilter.addDataScheme("file");
MediaScannerReceiver scanSdReceiver = new MediaScannerReceiver();
scanSdReceiver.setRestart(false);
egisterReceiver(scanSdReceiver, intentfilter);
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory().getAbsolutePath()))); 

并定义 MediaScannerReceiver 类:

public class MediaScannerReceiver extends BroadcastReceiver {  
private boolean restart = false;
@Override  
public void onReceive(Context context, Intent intent) {  
String action = intent.getAction();
if(action.equals("android.intent.action.MEDIA_SCANNER_FINISHED")) {  
//update finish
} 
}  
public void setRestart(boolean r) {
this.restart = r;
}
}  

关于android - 我尝试扫描 SD 卡中的媒体文件并刷新它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9409224/

相关文章:

Android:将主机名解析为 IP 时出错

android - android设备上二进制文件损坏的可能原因是什么

android - 如何创建这样的 Android 标签页(截图)?

android - 每行带有 RadioGroup 的 ListView

升级 flutter 包后 Android 版本不再工作

java - 如何针对不同版本的客户端代码进行自动化测试

android - 在自定义 ListView 中保留透明度

android - 如何使用google plus的accessToken从不同的 Activity 中注销android中的用户

java - 适用于 Android 的 Adob​​e AIR 3.1 native 扩展 - ActionScript 中的空扩展上下文

android - 如何在sqlite数据库中找到列的最大值