Android 将视频从其路径保存到图库中
Android save video in gallery from its path
希望你们都做得很好。我一直在尝试将视频保存在我的画廊中。我有已经保存在隐藏文件夹中的视频路径。我只想将该视频保存在我的画廊中。这是我可能会犯错误的代码。如果您能解决,我将不胜感激。
File newfile;
AssetFileDescriptor videoAsset = getContentResolver().openAssetFileDescriptor(Uri.parse( path), "r");
FileInputStream in = videoAsset.createInputStream();
String root = Environment.getExternalStorageDirectory().getAbsolutePath();
File dir = new File(root + "/" + "Pictures");
if (!dir.exists()) {
dir.mkdirs();
}
newfile = new File(dir, "status_"+System.currentTimeMillis()+".mp4");
if (newfile.exists()) newfile.delete();
OutputStream out = new FileOutputStream(newfile);
// Copy the bits from instream to outstream
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
通过此代码,我遇到了 无内容提供商 /storage/emulated/0/android/data/ 异常。因为我已经添加了图像提供程序和写入存储的权限,但我不知道视频需要什么提供程序或者代码有问题?
我找到了解决方案,我犯的错误是从一开始就没有获得正确的 FileInputStream。
只需替换这个
AssetFileDescriptor videoAsset = getContentResolver().openAssetFileDescriptor(Uri.parse( path), "r");
FileInputStream in = videoAsset.createInputStream();
有了这个你就可以开始了:D
FileInputStream in = new FileInputStream(new File(path));
希望你们都做得很好。我一直在尝试将视频保存在我的画廊中。我有已经保存在隐藏文件夹中的视频路径。我只想将该视频保存在我的画廊中。这是我可能会犯错误的代码。如果您能解决,我将不胜感激。
File newfile;
AssetFileDescriptor videoAsset = getContentResolver().openAssetFileDescriptor(Uri.parse( path), "r");
FileInputStream in = videoAsset.createInputStream();
String root = Environment.getExternalStorageDirectory().getAbsolutePath();
File dir = new File(root + "/" + "Pictures");
if (!dir.exists()) {
dir.mkdirs();
}
newfile = new File(dir, "status_"+System.currentTimeMillis()+".mp4");
if (newfile.exists()) newfile.delete();
OutputStream out = new FileOutputStream(newfile);
// Copy the bits from instream to outstream
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
通过此代码,我遇到了 无内容提供商 /storage/emulated/0/android/data/ 异常。因为我已经添加了图像提供程序和写入存储的权限,但我不知道视频需要什么提供程序或者代码有问题?
我找到了解决方案,我犯的错误是从一开始就没有获得正确的 FileInputStream。 只需替换这个
AssetFileDescriptor videoAsset = getContentResolver().openAssetFileDescriptor(Uri.parse( path), "r");
FileInputStream in = videoAsset.createInputStream();
有了这个你就可以开始了:D
FileInputStream in = new FileInputStream(new File(path));