gpt4 book ai didi

android - 如何在 Android 中使用相机保存临时图片?

转载 作者:太空宇宙 更新时间:2023-11-03 13:26:34 25 4
gpt4 key购买 nike

尝试从相机拍摄照片并将其保存在应用程序的缓存文件夹中时,我没有看到任何结果。应用程序没有崩溃,但是在我尝试将 ImageView src 字段设置为刚刚获取的文件的 URI 后,我在 LogCat 上收到了这条消息:

09-17 14:03:32.200: I/System.out(5104): Not a DRM File, opening notmally
09-17 14:03:32.200: I/System.out(5104): buffer returned
09-17 14:03:32.205: D/skia(5104): --- SkImageDecoder::Factory returned null
09-17 14:03:32.205: I/System.out(5104): resolveUri failed on bad bitmap uri: /data/data/com.example.me/cache/prefix1708798995.jpg

代码其实很简单:

File tempFile;

try {
tempFile = File.createTempFile("prefix", ".jpg");
} catch (IOException e) {
e.printStackTrace();
AppUtil.showErrorToUser(getApplicationContext(), getResources().getString(R.string.ERROR_upload));
return;
}

mCameraImage = tempFile.getAbsolutePath();
Uri uri = Uri.fromFile(tempFile);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intent, CAMERA_REQUEST_CODE);

并且,在 onActivityResult() 中:

mIvAttach.setImageURI(Uri.parse(mBodyLocalUri));

我也非常感到失望,因为我无法验证照片是否真的拍摄了,因为我无法访问/data/data/myapp文件夹(我的GS3 未 root,我仍然关心我的保修),因此我无法判断问题的根源在哪里。

最佳答案

第三方相机应用无权写入您的内部存储,包括 getCacheDir()(createTempFile() 正在使用它,但不清楚我到底是怎么做到的)。

I'm also very disappointed that I can't verify if pictures are actually taken, since I can't access /data/data/myapp folder (my GS3 is not rooted, and I still care about my warranty), therefore I'm not able to tell where the problem's very origin is.

首先,您可以使用 adb run-as。其次,这是同一个问题的另一种表现:DDMS不能访问内部存储,第三方应用也不能。

改用 getExternalCacheDir() 获取外部存储上的缓存位置,第三方相机应用程序可以尝试写入该位置。但请注意,由于这些应用程序中的错误/限制,并非所有第三方相机应用程序都一定会写入您请求的位置。

关于android - 如何在 Android 中使用相机保存临时图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18849570/

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