gpt4 book ai didi

安卓 : save/open picture taken from camera intent

转载 作者:行者123 更新时间:2023-11-29 23:30:59 25 4
gpt4 key购买 nike

我有一个相机 Intent ,它拍摄了一张照片,我想将它保存为临时文件:

File photo = new File(Environment.getExternalStorageDirectory(), "myTempPicture.jpg");
imageUri = Uri.fromFile(photo);

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent,0);

(可能Storage的选择不对)然后拍照后,我需要打开它来处理它:

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);
process(bitmap, false);
}catch(Exception e){
Log.d("exception : ", e.toString());
}
}

但我得到以下异常:java.io.FileNotFoundException:/storage/emulated/0/savedImage.jpg (Permission denied)

出了什么问题?


我的 list 文件包含:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

最佳答案

对于 android 6.0+ 或 SDK 23 及更高版本,您必须在 Activity 中请求运行时许可

这里有一个例子,你如何做到这一点,这里 1 是你的请求代码

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},1);
}

然后你应该检查用户是否授予权限

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case 1: {
if (!(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED)) {
Toast.makeText(this, "Permission denied", Toast.LENGTH_SHORT).show();
}
}
}
}

有关运行时请求的更多详细指南,请查看 here在官方文档中

关于安卓 : save/open picture taken from camera intent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52670280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com