项目里要做一个功能, 录制的视频之前我是存在用户的/data/data目录下的,现在需要把这个视频传到系统相册去,让用户来选择,所以需要做一个传递。
核心代码如下:
this.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File(mOutputFile.getAbsolutePath()))));
听说这个sendBroadcast的方法已经废弃了, 但是能用
还查到另外一个方法是用MediaScannerConnection实现的,但是我用不了,不知道为啥
MediaScannerConnection mMediaScanner = new MediaScannerConnection(this, null);
mMediaScanner.connect();
if (mMediaScanner.isConnected()) {
mMediaScanner.scanFile(mOutputFile.getPath(), "video/mp4");
}
mMediaScanner.disconnect();
然后在用sendBroadcast的时候我遇到一个坑,因为我的视频存在/data/data这个目录下,所以是不能直接传的,我之前存储的代码如下:
//save in the inner user data folder
//But if you use the sendBroadcast, you have to use the external storage directory
File mediaStorageDir = new File(context.getFilesDir().getPath());
这里用这个是不行的,所以我换成了存到外部存储中
File mediaStorageDir = Environment.getExternalStorageDirectory();
然后就能成功了~