onActivityResult数据字段使用FileProvider为null

时间:2017-12-05 03:45:40

标签: android android-camera-intent android-fileprovider

我一直试图用相机拍摄一张清晰的照片并通过意图传递它以在onActivityResult中使用它。

public void startCamera(View view) {
    //Start camera
    Intent camera=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
    output = new File(dir, "alphabetize.jpeg");
    camera.putExtra(MediaStore.EXTRA_OUTPUT, FileProvider.getUriForFile(MainActivity.this, BuildConfig.APPLICATION_ID + ".provider", output));

    //Start onActivityResult to deal with the result
    startActivityForResult(camera, REQUEST_IMAGE_CAPTURE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode,
                                Intent data) {
    if (requestCode == REQUEST_IMAGE_CAPTURE) {
        if (resultCode == RESULT_OK) {

            //Todo REMOVE THIS BLOCK FOR TESTING vvvvvvvv
            Intent i=new Intent(Intent.ACTION_VIEW);
            i.setDataAndType(FileProvider.getUriForFile(MainActivity.this, BuildConfig.APPLICATION_ID + ".provider", output), "image/jpeg");
            startActivity(i);
            finish();
            //Todo REMOVE THIS BLOCK FOR TESTING ^^^^^^^^
        }
    }
}

我没有遇到任何错误,但查看照片的“i”意图只是一个加载圈,而onActivityResult中的“data”字段为空。

我一直在搜寻我的大脑并一遍又一遍地尝试着,但找不到任何东西。

我发现了创建自己的FileProvider的问题,并且已经添加了这个:

<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>

到我的Manifest和这个:

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
  <external-path name="external_files" path="."/>
</paths>

在XML文件标题provider_paths.xml中。 请求代码和结果代码匹配。 我的目标SDK是26,因此在不获取FileUriExposedException的情况下无法使用Uri.fromFile。

这有点凌乱,但我在制作东西时已经开始了,并且已经陷入了一些僵局! 谢谢!这里希望它不仅仅是另一个错过的分号!

0 个答案:

没有答案