Android Kotlin实现指定路径自动选视频并上传Firebase
无需手动选择,通过指定路径上传本地视频到Firebase
权限准备
首先要确保App拥有访问本地存储的权限:
- Android 10及以下:在
AndroidManifest.xml中添加<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />,并在运行时主动申请权限 - Android 11+:若访问公共媒体目录(如DCIM、Download),可使用分区存储API;若需访问任意路径,需添加
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />并引导用户开启权限 - Android 13+:可使用更细分的
READ_MEDIA_VIDEO权限替代旧的存储权限
核心实现代码
直接指定视频路径获取文件,然后上传至Firebase Storage:
// 指定本地视频的绝对路径 String targetVideoPath = "/sdcard/DCIM/Camera/test_video.mp4"; File videoFile = new File(targetVideoPath); // 先校验文件有效性 if (videoFile.exists() && videoFile.canRead()) { // 获取Firebase Storage的根引用,自定义存储路径(这里存到uploaded_videos目录下) StorageReference storageRoot = FirebaseStorage.getInstance().getReference(); StorageReference targetVideoRef = storageRoot.child("uploaded_videos/" + videoFile.getName()); // 发起文件上传任务 UploadTask uploadTask = targetVideoRef.putFile(Uri.fromFile(videoFile)); // 监听上传状态 uploadTask.addOnSuccessListener(taskSnapshot -> { // 上传成功后,可获取视频的下载URL targetVideoRef.getDownloadUrl().addOnSuccessListener(downloadUri -> { String videoUrl = downloadUri.toString(); // 此处可将URL存入Firebase Database或做其他业务处理 }); }).addOnFailureListener(error -> { // 上传失败时处理错误 Log.e("FirebaseUpload", "视频上传失败: " + error.getMessage()); }).addOnProgressListener(snapshot -> { // 监听上传进度(可选) double progressPercent = (100.0 * snapshot.getBytesTransferred()) / snapshot.getTotalByteCount(); Log.d("FirebaseUpload", "当前上传进度: " + String.format("%.1f", progressPercent) + "%"); }); } else { Log.e("FileCheck", "指定路径的视频不存在或无读取权限"); }
替换原手动选择逻辑
把你原来的手动选择代码替换成上面的自动获取+上传逻辑即可,原代码参考:
Intent intent = new Intent(); intent.setType("video/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent,"Select Video"), REQUEST_TAKE_GALLERY_VIDEO);
额外提示
- 建议通过
Environment类获取标准存储目录,避免硬编码路径出错,比如Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM) - 大视频上传建议放在后台线程或使用WorkManager执行,避免阻塞主线程导致ANR
内容的提问来源于stack exchange,提问作者Hassaan Zahid
相关产品推荐
相关产品推荐

