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

Android开发:如何获取选中图片名称并传递至其他Activity?

嘿,我来帮你搞定获取选中图片名称并传递到另一个Activity的需求~下面是具体的实现步骤和代码:

获取选中图片名称并传递到其他Activity的解决方案

第一步:从图片Uri中提取文件名

我们可以通过ContentResolver查询MediaStore,或者用DocumentFile(适配高版本)来获取图片的文件名。这里给出两种可行的实现方式:

方式一:MediaStore查询(通用适配所有版本)

修改你现有的onActivityResult方法,加入获取文件名的逻辑:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == REQUEST_CODE && resultCode == RESULT_OK && data != null && data.getData() != null) {
        Uri uri = data.getData();
        String imageName = null;
        
        // 查询图片的显示名称
        String[] projection = {MediaStore.Images.Media.DISPLAY_NAME};
        Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
        if (cursor != null) {
            if (cursor.moveToFirst()) {
                imageName = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DISPLAY_NAME));
            }
            cursor.close(); // 记得关闭Cursor避免内存泄漏
        }

        try{
            Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(),uri);
            image.setImageBitmap(bitmap);
            
            // 获取到名称后,传递到目标Activity
            if (imageName != null) {
                Intent intent = new Intent(this, TargetActivity.class); // 替换成你的目标Activity类名
                intent.putExtra("SELECTED_IMAGE_NAME", imageName); // 用自定义key传递数据
                startActivity(intent);
            }
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
}

方式二:DocumentFile适配高版本(Android 19+)

如果你的App主要面向Android 4.4及以上版本,可以用更简洁的DocumentFile方式:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == REQUEST_CODE && resultCode == RESULT_OK && data != null && data.getData() != null) {
        Uri uri = data.getData();
        String imageName = null;

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            DocumentFile documentFile = DocumentFile.fromSingleUri(this, uri);
            if (documentFile != null) {
                imageName = documentFile.getName();
            }
        } else {
            // 低版本回退到MediaStore查询
            String[] projection = {MediaStore.Images.Media.DISPLAY_NAME};
            Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
            if (cursor != null) {
                if (cursor.moveToFirst()) {
                    imageName = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DISPLAY_NAME));
                }
                cursor.close();
            }
        }

        try{
            Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(),uri);
            image.setImageBitmap(bitmap);
            
            // 传递文件名到目标Activity
            if (imageName != null) {
                Intent intent = new Intent(this, TargetActivity.class);
                intent.putExtra("SELECTED_IMAGE_NAME", imageName);
                startActivity(intent);
            }
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
}

第二步:在目标Activity中接收文件名

在你的目标Activity(比如TargetActivity)的onCreate方法里,获取传递过来的文件名:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_target);

    // 获取传递过来的图片名称
    String selectedImageName = getIntent().getStringExtra("SELECTED_IMAGE_NAME");
    if (selectedImageName != null) {
        // 这里可以根据需求使用文件名,比如显示在TextView中
        TextView imageNameTv = findViewById(R.id.tv_image_name);
        imageNameTv.setText("选中的图片:" + selectedImageName);
    }
}

注意事项

  • 别忘了在AndroidManifest.xml中注册你的目标Activity哦。
  • 高版本Android(10+)中,这种通过Uri获取文件名的方式不需要额外的存储权限,因为我们是通过系统提供的内容Uri来访问的,不用担心权限问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:02:23