java - android相机 Intent 不返回任何数据

标签 java android camera

在根据相机 Intent 拍摄照片后,我无法通过“onActivityResult”方法获取数据。

这是我调用相机 Intent 的方法:

private void __initCamera() {

    String path = Environment.getExternalStorageDirectory() + "/vault/images/";

    File dir = new File(path);
    if (!dir.exists()) {
        dir.mkdirs();
        dir = new File(path);
    }
    String[] content = dir.list();
    String fileName = (content.length + 1) + ".jpg";
    File file = new File(path, fileName);
    if (!file.exists()) {
        try {
            file.createNewFile();
        } catch (IOException ex) {
            Log.e("my_app", ex.getMessage());
        }
    }

    Uri uri = Uri.fromFile(file);  
    Intent i = new Intent("android.media.action.IMAGE_CAPTURE");
    i.putExtra(MediaStore.EXTRA_OUTPUT, uri);
    startActivityForResult(i, 8765);
}

这是我的 onActivityResult 方法:

returnCode: -1(应该是:1,对吧?),

异常:java.io.FileNotFoundException:没有内容提供者:#Intent;action=inline-data;end

data.toURI() : #Intent;action=inline-data;end

   @Override
protected void onActivityResult(int requestCode, int returnCode, Intent data) {

    try {

        Bitmap bitmap = Media.getBitmap(getContentResolver(), Uri.parse(data.toURI()));
        FileOutputStream out = new FileOutputStream(file);
        bitmap.compress(Bitmap.CompressFormat.JPEG, 50, out);
        bitmap.recycle();
        out.close();
    } catch (Exception ex) {
        Log.e("TROLL", ex.toString());
    }
}

最佳答案

这个:

Bitmap bitmap = Media.getBitmap(getContentResolver(), Uri.parse(data.toURI()));

应该是这样的:

Bitmap bitmap = (Bitmap) data.getExtras().get("data"); 

至少,这就是我通常检索图像的方式。另外,我会建议检查正确的请求代码,而不是在那里使用包含所有内容的异常。

关于java - android相机 Intent 不返回任何数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12446627/

相关文章:

java - Dagger + retrofit 。在运行时添加身份验证 header

java - 安卓APK版本

android - Android中如何正确使用Parcelable类

java - 使图像不出现在 Android 相册中

java - 递归取消 allOf CompletableFuture

java - 包括 Spring Jaxb2Marshaller 的 DOCTYPE

Java 多线程 : positioning of methods

android - 在 Android 10 中从 Uri 获取绝对路径

安卓 : display foreground (and views) in a camera preview in order to make an old camera back look

camera - 如何将代码 AVFoundation objective c 转换为 Swift?