android - 如何实现范围存储以从库中选择视频并将其发送到 Android 10 上的另一个 Activity
问题描述
在我的应用程序中,我有 2 个按钮,一个用于打开相机并录制视频,另一个用于从图库中选择视频,然后我使用意图将视频发送到另一个活动。它在除 android 10 之外的所有 android 版本上都能正常工作
private void openVideoCapture() {
String[] perms = {Manifest.permission.CAMERA};
if (EasyPermissions.hasPermissions(this, perms)) {
final int durationLimit = 600;
Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, durationLimit);
startActivityForResult(intent, REQUEST_VIDEO_TRIMMER);
} else {
// Do not have permissions, request them now
EasyPermissions.requestPermissions(this, getString(R.string.permission_camera), 123, perms);
}
}
@AfterPermissionGranted(124)
private void pickFromGallery() {
String[] perms = {Manifest.permission.READ_EXTERNAL_STORAGE};
if (EasyPermissions.hasPermissions(this, perms)) {
Intent intent = new Intent();
intent.setTypeAndNormalize("video/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(Intent.createChooser(intent, getString(R.string.label_select_video)), REQUEST_VIDEO_TRIMMER);
} else {
EasyPermissions.requestPermissions(this, getString(R.string.permission_read_storage_rationale), 124, perms);
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == REQUEST_VIDEO_TRIMMER) {
final Uri selectedUri = data.getData();
if (selectedUri != null) {
startTrimActivity(selectedUri);
} else {
Toast.makeText(MainActivity.this, R.string.toast_cannot_retrieve_selected_video, Toast.LENGTH_SHORT).show();
}
}
}
}
private void startTrimActivity(@NonNull Uri uri) {
Intent intent = new Intent(this, TrimmerActivity.class);
intent.putExtra(EXTRA_VIDEO_PATH, FileUtils.getPath(this, uri));
startActivity(intent);
}
解决方案
推荐阅读
- sql - 如何在(Oracle SQL)中只允许数字
- python - 当 y_min = 0 时,二维平面中的有效联合和交叉点
- node.js - 节点js的Heroku部署
- c - 将单个字符指针传递给C中的函数
- php - Search.php 无法在找到项目时显示空白页面
- python - 在重定向页面上显示上次上传的文件详细信息 - Django
- speech-recognition - 如何从 microsoft-cognitive 中的单个音频文件中识别多个扬声器
- firebase - Flutter Profile Matching App - Cloud Firestore 数据建模 | 如何查询以避免对已经刷过的 UID 进行不必要的读取
- python - QWidget 在布局分配时变得不可见
- javascript - 根据js确认执行按钮onclick动作