【问题标题】:URI/URL Paths from Gallery and Camera-taken-photo are differentGallery 和 Camera-taken-photo 的 URI/URL 路径不同
【发布时间】:2011-11-11 19:59:08
【问题描述】:

我正在尝试让用户在使用设备默认相机拍照和从图片库中选择也默认为设备的图片之间进行选择。

我可以让相机拍摄照片并将其显示在应用程序中,因为它似乎喜欢直接指向 JPG 文件的 URI。但是,为画廊 URI 提供的路径非常不同,根本不显示图像。

这是我得到的路径:

从相机拍摄时: /mnt/sdcard/filename.jpg

从图库中选择时: /external/images/media/#(#是我相信的ID号/缩略图)

用于检索两个路径的代码是:

相机

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            mImageCaptureUri = 
            Uri.fromFile(new file(Environment.getExternalStorageDirectory(),
            "fname_" + String.valueOf(System.currentTimeMillis()) + ".jpg"));
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);

画廊

   Intent intent = new Intent();
   intent.setType("image/*");
   intent.setAction(Intent.ACTION_GET_CONTENT);
   startActivityForResult(Intent.createChooser(intent, 
           "Complete action using"), PICK_FROM_FILE);
   intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);

使用图库,它会打开,我可以正常浏览,只是不像拍照那样显示图像。

选择/拍摄后用于将图像拉入我的应用程序的代码是:

   ImageView getMyphoto = (ImageView) findViewById(R.id.usePhoto);
   String stringUrl = prefSettings.getString("myPic", "");
   Uri getIMG = Uri.parse(stringUrl);
   getMyphoto.setImageURI(null);
   getMyphoto.setImageURI(getIMG);

【问题讨论】:

    标签: android path camera android-gallery android-imageview


    【解决方案1】:

    检查 uri 字符串中的“/external”,然后使用获取正确路径的方法来获取绝对路径。

     private String getRealPathFromURI(Uri contentUri) {
            int columnIndex = 0;
    
            String[] proj = { MediaStore.Images.Media.DATA };
            Cursor cursor = managedQuery(contentUri, proj, null, null, null);
    
            try {
                columnIndex = cursor.getColumnIndexOrThrow
                               (MediaStore.Images.Media.DATA);
            } catch (Exception e) {
                Toast.makeText(ImageEditor.this, "Exception in getRealPathFromURI",
                               Toast.LENGTH_SHORT).show();
                finish();  
                return null;
            }       
            cursor.moveToFirst();
            return cursor.getString(columnIndex);               
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-23
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      • 1970-01-01
      相关资源
      最近更新 更多