Android 打开/storage/emulated/0/DCIM/Camera/ 从中选择一张照片返回
时间: 2023-11-23 22:06:17 浏览: 104
以下是Android打开相册并选择照片的代码示例:
```java
// 在Activity中调用以下方法
private static final int REQUEST_CODE = 1;
private static final int PERMISSION_REQUEST_CODE = 2;
// 检查是否有读取存储权限
private boolean checkPermission() {
int result = ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE);
return result == PackageManager.PERMISSION_GRANTED;}
// 请求读取存储权限
private void requestPermission() {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE);
}
// 处理权限请求结果
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case PERMISSION_REQUEST_CODE:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(MainActivity.this, "Permission granted successfully!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "Permission denied, please grant the permission to access the gallery.", Toast.LENGTH_SHORT).show();
}
break;
}
}
// 打开相册
private void openGallery() {
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, REQUEST_CODE);
}
// 处理选择照片的结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK && data != null) {
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();
// 在这里可以使用picturePath来处理选择的照片
}
}
```
请注意,为了访问存储,您需要在AndroidManifest.xml文件中添加以下权限:
```xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
```
如果您的应用程序运行在Android 10或更高版本上,则还需要在AndroidManifest.xml文件中添加以下代码:
```xml
<application
android:requestLegacyExternalStorage="true"
...>
...
</application>
```