我使用下面的代码从图库中挑选视频,它在棉花糖之前工作得很好,但它似乎不适用于奥利奥
try {
Intent i = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
i.setType("image/* video/*");
startActivityForResult(i, CAMERA_CAPTURE_VIDEO_REQUEST_CODE);
} catch (Exception e) {
e.printStackTrace();
}
我也试过了,但不起作用
try {
Intent i = new Intent(Intent.ACTION_GET_CONTENT,
android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
i.setType("*/*");
startActivityForResult(i, CAMERA_CAPTURE_VIDEO_REQUEST_CODE);
} catch (Exception e) {
e.printStackTrace();
}
发布于 2017-12-29 06:57:36
试试这个..。
Intent intent = new Intent();
intent.setType("video/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Video"),REQUEST_TAKE_GALLERY_VIDEO);
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == REQUEST_TAKE_GALLERY_VIDEO) {
Uri selectedImageUri = data.getData();
// OI FILE Manager
filemanagerstring = selectedImageUri.getPath();
// MEDIA GALLERY
selectedImagePath = getPath(selectedImageUri);
if (selectedImagePath != null) {
Intent intent = new Intent(HomeActivity.this,
VideoplayAvtivity.class);
intent.putExtra("path", selectedImagePath);
startActivity(intent);
}
}
}
}
// UPDATED!
public String getPath(Uri uri) {
String[] projection = { MediaStore.Video.Media.DATA };
Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
if (cursor != null) {
// HERE YOU WILL GET A NULLPOINTER IF CURSOR IS NULL
// THIS CAN BE, IF YOU USED OI FILE MANAGER FOR PICKING THE MEDIA
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
} else
return null;
}
发布于 2018-02-27 06:21:10
这是权限问题,请提供
Manifest.permission.CAMERA
、Manifest.permission.WRITE_EXTERNAL_STORAGE
、Manifest.permission.READ_EXTERNAL_STORAGE
权限
在Android 8.0 (API级别26)之前,如果应用程序在运行时请求权限并授予权限,系统还会错误地授予应用程序属于同一权限组的其余权限,以及在清单中注册的权限。
对于面向Android 8.0的应用程序,此行为已更正。该应用程序仅被授予它显式请求的权限。但是,一旦用户向应用程序授予权限,则会自动授予该权限组中的所有后续权限请求。
例如,假设一个应用程序在其清单中同时列出了READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE。应用程序请求READ_EXTERNAL_STORAGE,用户授予它。如果app的目标API级别为25或更低,系统也会同时授予WRITE_EXTERNAL_STORAGE权限,因为它属于同一个存储权限组,并且也在清单中注册。如果应用程序以Android8.0(API26级)为目标,则系统当时仅授予READ_EXTERNAL_STORAGE权限;但是,如果应用程序稍后请求WRITE_EXTERNAL_STORAGE,系统将立即授予该权限,而不提示用户Source link
,但您必须提供对外部存储的读写权限。对我来说,它是工作的
https://stackoverflow.com/questions/48018418
复制