刷新图像和视频的 MediaStore
Refresh MediaStore for Images & Videos
我根据自己的要求移动和删除了很多图像和视频,现在我正在使用
扫描媒体
Intent scanFileIntent = new Intent(
Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri);
sendBroadcast(scanFileIntent);
一切正常,但有时会冻结屏幕,我认为 MediaScanner 存在问题。
我的第二个问题是如何扫描所有媒体存储而不是扫描 perticuler 文件。
提前致谢!!
改用MediaScannerConnection
。
public void callScanItent(Context context,String path) {
MediaScannerConnection.scanFile(context,
new String[] { path }, null,null);
}
或
public void callScanItent(Context context,String path) {
MediaScannerConnection.scanFile(context,
new String[]{path}, null, new MediaScannerConnection.OnScanCompletedListener() {
@Override
public void onScanCompleted(String path, Uri uri) {
Log.d("Scan complete for: ",path);
}
});
}
您应该尝试使用此解决方案来移动和删除图像。
在 deleteRecursive(fileOrDirectory) 中传递文件目录路径,您可以从文件或目录中删除多个和单个图像。
public void deleteRecursive(File fileOrDirectory) {
if (!fileOrDirectory.isDirectory()) return;
File[] childFiles = fileOrDirectory.listFiles();
if (childFiles == null) return;
if (childFiles.length == 0) {
fileOrDirectory.delete();
} else {
for (File childFile : childFiles) {
deleteRecursive(childFile);
DeleteAndScanFile(MainActivity.this, childFile.getPath(), childFile);
}
}
}
private void DeleteAndScanFile(final Context context, String path,
final File fi) {
String fpath = path.substring(path.lastIndexOf("/") + 1);
try {
MediaScannerConnection.scanFile(context, new String[]{Environment
.getExternalStorageDirectory().toString()
+ "/abc/"
+ fpath.toString()}, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
if (uri != null) {
context.getContentResolver().delete(uri, null,
null);
}
fi.delete();
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
这对我来说很好,希望这对你有帮助...如果你需要任何帮助,你可以问
我根据自己的要求移动和删除了很多图像和视频,现在我正在使用
扫描媒体Intent scanFileIntent = new Intent(
Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri);
sendBroadcast(scanFileIntent);
一切正常,但有时会冻结屏幕,我认为 MediaScanner 存在问题。
我的第二个问题是如何扫描所有媒体存储而不是扫描 perticuler 文件。
提前致谢!!
改用MediaScannerConnection
。
public void callScanItent(Context context,String path) {
MediaScannerConnection.scanFile(context,
new String[] { path }, null,null);
}
或
public void callScanItent(Context context,String path) {
MediaScannerConnection.scanFile(context,
new String[]{path}, null, new MediaScannerConnection.OnScanCompletedListener() {
@Override
public void onScanCompleted(String path, Uri uri) {
Log.d("Scan complete for: ",path);
}
});
}
您应该尝试使用此解决方案来移动和删除图像。
在 deleteRecursive(fileOrDirectory) 中传递文件目录路径,您可以从文件或目录中删除多个和单个图像。
public void deleteRecursive(File fileOrDirectory) {
if (!fileOrDirectory.isDirectory()) return;
File[] childFiles = fileOrDirectory.listFiles();
if (childFiles == null) return;
if (childFiles.length == 0) {
fileOrDirectory.delete();
} else {
for (File childFile : childFiles) {
deleteRecursive(childFile);
DeleteAndScanFile(MainActivity.this, childFile.getPath(), childFile);
}
}
}
private void DeleteAndScanFile(final Context context, String path,
final File fi) {
String fpath = path.substring(path.lastIndexOf("/") + 1);
try {
MediaScannerConnection.scanFile(context, new String[]{Environment
.getExternalStorageDirectory().toString()
+ "/abc/"
+ fpath.toString()}, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
if (uri != null) {
context.getContentResolver().delete(uri, null,
null);
}
fi.delete();
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
这对我来说很好,希望这对你有帮助...如果你需要任何帮助,你可以问