我正在尝试使用FileProvider在Marshmallow和nougat中打开相机,但是没有让位图在onActivityResult方法中的imageview中显示捕获的图像。即使我试图从图像路径获取位图。这是我的代码
def resource_name
:user
end
def resource
@resource ||= User.new
end
def devise_mapping
@devise_mapping ||= Devise.mappings[:user]
end
答案 0 :(得分:0)
我不知道你的代码是否包含所有内容。但这里有一些要注意的地方:
通常,用户使用设备相机拍摄的任何照片都应保存在公共外部存储设备中,以便所有应用都可以访问这些照片。
(取自docs)
WRITE_EXTERNAL_STORAGE
中声明AndroidManifest.xml
: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 99);
...
....
@Override
public void onRequestPermissionsResult(final int requestCode, @NonNull final String[] permissions, @NonNull final int[] grantResults) {
// Execute your code to create the file and start the camera intent here
}
(阅读更多here)
getExternalStoragePublicDirectory
中的Environment
作为storageDir
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
file_path.xml
现在应该指向Pictures/
: <external-path name="my_pictures" path="Pictures/"/>
onActivityResult
中,您只需使用从photoUri
收到的FileProvider#getUriForFile
字段即可设置图片: imageView.setImageURI(photoUri);
答案 1 :(得分:-1)
我认为你必须将这个库用于相机和图库:https://github.com/jrvansuita/PickImage你不需要将图像转换为位图。这个库在Marshmallow和nougat中工作正常。