rn获取原生相机和相册
时间: 2023-11-22 08:53:15 浏览: 33
获取原生相机和相册可以使用 Android 系统提供的 Intent。
获取相机:
```java
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
```
其中 `REQUEST_IMAGE_CAPTURE` 是一个自定义的请求码,用于在 `onActivityResult()` 方法中识别返回结果。
获取相册:
```java
Intent pickPhotoIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(pickPhotoIntent, REQUEST_IMAGE_PICK);
```
其中 `REQUEST_IMAGE_PICK` 是一个自定义的请求码,用于在 `onActivityResult()` 方法中识别返回结果。
在 `onActivityResult()` 方法中处理返回结果:
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
// 处理相机返回的图片
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
imageView.setImageBitmap(imageBitmap);
} else if (requestCode == REQUEST_IMAGE_PICK && resultCode == RESULT_OK) {
// 处理相册返回的图片
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));
}
}
```
其中 `imageView` 是用于显示图片的 `ImageView`。