在“下载”文件夹中下载视频 Android Q

问题描述

根据 Android Q 及以上版本的限制,我正在尝试下载文件夹下的下载文件夹中的视频文件。但它总是需要到 Android/data//Downloads/ 文件夹。我的应用程序的 minSdk 是 API 16,目前 targetSdk 是 API 29。 以下是使用的参考代码片段。

String videoFileName = "video_" + System.currentTimeMillis() + ".mp4";
ContentValues valuesvideos;
valuesvideos = new ContentValues();
valuesvideos.put(MediaStore.Video.Media.RELATIVE_PATH,"Movies/" + "Folder");
valuesvideos.put(MediaStore.Video.Media.TITLE,videoFileName);
valuesvideos.put(MediaStore.Video.Media.disPLAY_NAME,videoFileName);
valuesvideos.put(MediaStore.Video.Media.MIME_TYPE,"video/mp4");
valuesvideos.put(MediaStore.Video.Media.DATE_ADDED,System.currentTimeMillis() / 1000);
valuesvideos.put(MediaStore.Video.Media.DATE_TAKEN,System.currentTimeMillis());
valuesvideos.put(MediaStore.Video.Media.IS_PENDING,1);
ContentResolver resolver = mContext.getContentResolver();
Uri collection = MediaStore.Video.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY);
Uri uriSavedVideo = resolver.insert(collection,valuesvideos);

ParcelFileDescriptor pfd;
try {
    pfd = mContext.getContentResolver().openFileDescriptor(uriSavedVideo,"w");
    FileOutputStream out = new FileOutputStream(pfd.getFileDescriptor());
    File storageDir = new File(mContext.getExternalFilesDir(Environment.DIRECTORY_MOVIES),"Folder");
    File imageFile = new File(storageDir,"Myvideo");
    FileInputStream in = new FileInputStream(imageFile);

    byte[] buf = new byte[8192];
    int len;
    while ((len = in.read(buf)) > 0) {

        out.write(buf,len);
    }

    out.close();
    in.close();
    pfd.close();
} catch (Exception e) {

    e.printstacktrace();
}
valuesvideos.clear();
valuesvideos.put(MediaStore.Video.Media.IS_PENDING,0);
mContext.getContentResolver().update(uriSavedVideo,valuesvideos,null,null);

提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)