这是我的代码
public static void ChooseVideo(ActivityResultLauncher<Intent> resultLauncher) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && SdkExtensions.getExtensionVersion(Build.VERSION_CODES.R) >= 2) {
Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES);
intent.putExtra(Intent.EXTRA_MIME_TYPES, new String[]{"video/*"});
resultLauncher.launch(intent);
}else {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("video/*");
resultLauncher.launch(intent);
}
Log.i("FilesUtil", "loading video");
}
我的问题就在这部分
Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES);
intent.putExtra(Intent.EXTRA_MIME_TYPES, new String[]{"video/*"});
resultLauncher.launch(intent);
此部分应在我的应用程序中触发 Android 13 及更高版本上的媒体选择器,如下图所示: Android 13 图像
它可以在 Android 13 AVD 和运行 Android 13 及更高版本的真实设备上正常运行。
问题是它在 Android Studio AVD 中的 Android 14 和 15 上不起作用。它不显示任何可供选择的媒体: Android 14 和 15 AVD 图像
它在真实设备中工作正常,但在 AVD 中无法工作
我尝试过这些版本 AVD版本图像
尝试这个
PickVisualMediaRequest
在ActivityResultLauncher
,
private ActivityResultLauncher<PickVisualMediaRequest> pickMultipleMedia;
private void ChooseVideo() {
pickMultipleMedia.launch(new PickVisualMediaRequest.Builder()
.setMediaType(ActivityResultContracts.PickVisualMedia.VideoOnly.INSTANCE)
.build());
}
pickMultipleMedia = registerForActivityResult(
new ActivityResultContracts.PickMultipleVisualMedia(), new
ActivityResultCallback<List<Uri>>(){
@Override
public void onActivityResult(List<Uri> uris) {
if (!uris.isEmpty()) {
Log.d(TAG, "Number of items selected: " + uris.size());
} else {
Log.d(TAG, "No media selected");
}
}
});