You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发:如何将ArrayList中的图片转换为Uri并传递到FullscreenImage Activity

实现方案

你存储的是应用内置的drawable资源ID,不需要访问外部存储生成File对象,直接通过安卓资源规则构造Uri即可,步骤如下:

  • 首先确认你的Photo类提供了资源ID的获取方法,示例结构参考:
public class Photo {
    private int resId;
    public Photo(int resId) {
        this.resId = resId;
    }
    public int getResId() {
        return resId;
    }
}
  • 批量转换ArrayList<Photo>为Uri列表的代码:
List<Uri> imageUriList = new ArrayList<>();
// 遍历原有的Photo列表
for (Photo photo : mList) {
    // 构造drawable资源的Uri,格式为 android.resource://[包名]/[资源id]
    Uri imageUri = Uri.parse("android.resource://" + getPackageName() + "/" + photo.getResId());
    imageUriList.add(imageUri);
}
  • 跨Activity传递Uri列表(从MainActivity到FullscreenImageActivity):
// MainActivity中传递数据
Intent intent = new Intent(this, FullscreenImageActivity.class);
// Uri实现了Parcelable接口,直接用putParcelableArrayListExtra传递
intent.putParcelableArrayListExtra("image_uris", (ArrayList<? extends Parcelable>) imageUriList);
startActivity(intent);

// FullscreenImageActivity中接收数据
List<Uri> receiveUris = getIntent().getParcelableArrayListExtra("image_uris");
// 拿到Uri后可直接用Glide、Picasso等加载,或者用ImageView.setImageURI()显示

如果你需要生成文件类型的Uri供外部应用访问,才需要将drawable写入本地存储再通过FileProvider生成Uri,仅应用内部使用上述资源Uri方案性能更高,不需要申请存储权限。

内容的提问来源于stack exchange,提问作者Anushka Roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:18:01