java - UnsupportedOperationException 打开相机时出错 android

标签 java android android-camera android-camera-intent android-bitmap

我正在做一个Android应用程序,需要打开相机并在屏幕上显示图片并获取该图片的绝对路径。

但是当我点击相机时,我总是收到“UnsupportedOperationException: Unknown URI: content://media/external/images/media” 错误。

我的代码:

        ContentValues values = new ContentValues();
        values.put(MediaStore.Images.Media.TITLE, "ircms");
        imgUri = getContentResolver().insert(
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); // Here getting error
        Intent intentPicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        intentPicture.putExtra(MediaStore.EXTRA_OUTPUT, imgUri);
        startActivityForResult(intentPicture, 1);

onActivityResult:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
        case 1:
            try {
                String photoPath = getRealPathFromURI(this, imgUri);
                o2.inSampleSize = 8;
                Bitmap bitmap = BitmapFactory.decodeFile(photoPath, o2);
                }
       }
}

请帮忙...

最佳答案

试试这个

你需要什么 在Manafiest.xml中

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

在您的 Activity 中

private static final int TAKE_PHOTO_CODE = 1;

private void takePhoto(){
  final Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(getTempFile(this)) ); 
  startActivityForResult(intent, TAKE_PHOTO_CODE);
}

private File getTempFile(Context context){
  //it will return /sdcard/image.tmp
  final File path = new File( Environment.getExternalStorageDirectory(), context.getPackageName() );
  if(!path.exists()){
    path.mkdir();
  }
  return new File(path, "image.tmp");
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (resultCode == RESULT_OK) {
    switch(requestCode){
      case TAKE_PHOTO_CODE:
        final File file = getTempFile(this);
        try {
          Bitmap captureBmp = Media.getBitmap(getContentResolver(), Uri.fromFile(file) );
          // do whatever you want with the bitmap (Resize, Rename, Add To Gallery, etc)
        } catch (FileNotFoundException e) {
          e.printStackTrace();
        } catch (IOException e) {
          e.printStackTrace();
        }
      break;
    }
  }
}

关于java - UnsupportedOperationException 打开相机时出错 android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20919355/

相关文章:

java - 将根元素添加到 xml 字符串并解析 java 中的数据

android - 为 Android 构建 liblinphone

android - 多次使用 camera.takePicture() 时只保存最后一张照片

android - 使用原始相机 byte[] 数组进行增强现实

java - 用Java访问网站搜索框

java - 使用 EntityManagerFactory 获取刚刚添加的对象

java - 当初始化发生在 try/catch 中时,Eclipse 给出未初始化的编译时错误

android - Android 中的继承

java - Android:分割非常大的字符串

Android 2.3 相机自动对焦不工作