java - 如何从相机 Intent 获取 URI?

标签 java android camera uri

我已经读过这篇文章:Get uri from camera intent in android但这对我没有帮助。

为了处理相机请求,我使用了以下代码:

    public void startCamera() {
    if (PermissionUtils.requestPermission(
            this,
            CAMERA_PERMISSIONS_REQUEST,
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.CAMERA)) {
        //Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
        Uri photoUri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".provider", getCameraFile());
        intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        startActivityForResult(intent, CAMERA_IMAGE_REQUEST);
    }
}


 public File getCameraFile() {
    File dir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
    return new File(dir, FILE_NAME);
}


    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == CAMERA_IMAGE_REQUEST && resultCode == RESULT_OK) {
        Uri photoUri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".provider", getCameraFile());
        uploadImage(photoUri);
    }
}

当我调用函数“startCamera”时,应用程序崩溃,并在该行给出错误:

Uri photoUri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".provider", getCameraFile());"

有什么帮助吗?谢谢!

最佳答案

已修复,方法是将以下内容添加到“AndroidManifest”:

        <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="${applicationId}.provider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_paths" />
    </provider>

关于java - 如何从相机 Intent 获取 URI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52687052/

相关文章:

Java 基本计算器

Android java binder 失败 BINDER TRANSACTION?

java - 在自定义布局类上膨胀 xml-Layout 时出现问题

java - 将变量从 View 传递到 Activity

用于图像数据采集和时间像素分析的 C++ 库

java - 在一台 PC 上模拟两个 Java SE 实例

java - 可以从 JList 获取所有项目吗?

java - 游戏中的多人游戏。如何明智地设计它?

javascript - 根据相机 View 变化计算对象旋转

opencv - Opencv相机百万像素Android