打开相机android时出现UnsupportedOperationException错误
Posted
技术标签:
【中文标题】打开相机android时出现UnsupportedOperationException错误【英文标题】:UnsupportedOperationException Error while opening camera android 【发布时间】:2014-01-22 01:11:58 【问题描述】:我正在做一个 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);
请帮忙...
【问题讨论】:
您是否在“Manifest 文件”中进行了更改以支持“媒体”、“外部存储”??? 是的,我添加了试试这个
你需要什么 在 Manafiest.xml 中
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在你的活动中
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;
【讨论】:
我正在尝试您的答案,但它要求我创建 Media.getBitmap();功能。 你必须导入 android.provider.MediaStore.Images.Media 见文档developer.android.com/reference/android/provider/… 不,你不需要!只需导入 android.provider.MediaStore.Images.Media 如果你使用的是 eclipse 而不是按 ctrl+shift+O【参考方案2】:使用此代码获取onActivityResult中图像的文件路径
Uri selectedImageURI = data.getData();
imageFile = new File(getRealPathFromURI(selectedImageURI));
private String getRealPathFromURI(Uri contentURI)
Cursor cursor = getContentResolver().query(contentURI, null, null, null, null);
if (cursor == null) // Source is Dropbox or other similar local file path
return contentURI.getPath();
else
cursor.moveToFirst();
int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
return cursor.getString(idx);
【讨论】:
以上是关于打开相机android时出现UnsupportedOperationException错误的主要内容,如果未能解决你的问题,请参考以下文章
尝试通过 Postman 调用 OWIN OAuth 安全 Web Api 来获取 JWT 时出现“错误”:“unsupported_grant_type”
使用 Gecko 驱动程序运行我的 Selenium 脚本时出现“org.openqa.selenium.WebDriverException: Unsupported Marionette prot
spark提交jar包时出现unsupported major.minor version 52.0错误的解决方案
将应用程序上传到 Playstore 时出现有关与相机相关的权限的错误
java.lang.UnsupportedClassVersionError: com/android/build/gradle/AppPlugin : Unsupported major.minor