Android API 30 获取图片教程

一、整体流程

下面是获取图片的整体流程,包括步骤和对应的操作:

| 步骤 | 操作 |
| ---- | ---- |
| 1 | 在AndroidManifest.xml文件中添加权限 |
| 2 | 创建一个Activity用于显示图片 |
| 3 | 通过ContentResolver查询获取图片 |
| 4 | 处理获取到的图片数据并显示在Activity中 |

二、详细操作

步骤1:添加权限

在AndroidManifest.xml文件中添加以下权限:

```xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

### 步骤2:创建一个Activity

创建一个新的Activity用于显示图片,并在布局文件中添加一个ImageView用于显示图片。

```markdown
```java
public class DisplayImageActivity extends AppCompatActivity {
    private ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_display_image);
        
        imageView = findViewById(R.id.imageView);
    }
}

### 步骤3:查询获取图片

使用ContentResolver查询手机中的图片,并获取到图片的URI。

```markdown
```java
String[] projection = {MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
        projection, null, null, MediaStore.Images.Media.DATE_ADDED + " DESC");
注释:projection数组用于指定查询的字段,包括图片的ID和路径;通过ContentResolver的query方法获取图片的Cursor对象。

### 步骤4:处理图片数据

对获取到的图片数据进行处理,并将图片显示在ImageView中。

```markdown
```java
if (cursor != null && cursor.moveToFirst()) {
    String imagePath = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
    Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
    imageView.setImageBitmap(bitmap);
}
注释:判断cursor是否为空并移动到第一条数据;从cursor中获取图片路径;通过BitmapFactory将图片文件转换为Bitmap;最后将Bitmap显示在ImageView中。

## 关系图

```mermaid
erDiagram
    CUSTOMER ||--o| ORDER : places
    ORDER ||--| PRODUCT : contains

通过以上方式,你就可以顺利地在Android API 30中获取图片并显示在应用中了。希望你可以顺利完成这个任务,加油!