android – 从Camera保存图像将图片意图保存到应用程序私有存储
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android – 从Camera保存图像将图片意图保存到应用程序私有存储,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2601字,纯文字阅读大概需要4分钟。
内容图文
![android – 从Camera保存图像将图片意图保存到应用程序私有存储](/upload/InfoBanner/zyjiaocheng/780/029233807beb49f784fa8705e9a2fae3.jpg)
这里有很多关于如何在android中的外部存储上创建文件的信息,将uri传递给ACTION_IMAGE_CAPTURE,然后将图像保存在那里.
但是,我想在Application的私有存储(有时称为内部存储)中创建一个文件,并将该文件uri传递给ACTION_IMAGE_CAPTURE,但Camera intent在onActivityResult中返回RESULT_CANCELED.
我该怎么办?
private void checkWhetherCameraIsAvailableAndTakeAPicture() {
// Check wether this device is able to take pictures
if (PhotoHandler.isIntentAvailable(a, MediaStore.ACTION_IMAGE_CAPTURE)) {
System.gc();
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File imageFile = null;
try {
if(a.application.user.isPublishImagesToGallery()){
imageFile = a.application.photoHandler.createImageFileOnExternalStorage();
} else {
imageFile = a.application.photoHandler.createImageFileOnInternalStorage();
}
imagePath = imageFile.getAbsolutePath();
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imageFile));
} catch (IOException e) {
e.printStackTrace();
imageFile = null;
imagePath = null;
}
startActivityForResult(takePictureIntent, Preferences.REQUEST_CODE_TAKE_IMAGE_WITH_CAMERA);
} else { // Notify the user that their device is unable to take photos
a.application.toastMaker.toastLong(ErrorMessages.DEVICE_UNABLE_TO_TAKE_PHOTOS);
}
} // End of checkWhetherCameraIsAvailableAndTakeAPicture
public File createImageFileOnInternalStorage() throws IOException {
return createTempFileOnGivenLocation();
}
private String imageFilename() {
return filenamePrefix + Calendar.getInstance().getTimeInMillis();
}
private File createTempFileOnGivenLocation() throws IOException {
File imageFile = File.createTempFile(imageFilename(), filenameSuffix, context.getFilesDir());
setImagePathTemporary(imageFile.toString());
return imageFile;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == Preferences.REQUEST_CODE_TAKE_IMAGE_WITH_CAMERA) {
if (resultCode != Activity.RESULT_CANCELED) {
handlePhotoTakenWithCamera();
} else {
// ONACTIVITYRESULT Returns Here!
new File(imagePath).delete())
}
} else if (requestCode == Preferences.REQUEST_CODE_PICK_IMAGES_FROM_GALLERY) {
if (resultCode != Activity.RESULT_CANCELED) {
handlePhotosPickedFromGallery(data);
}
}
} // End of onActivityResult
解决方法:
每个应用程序的内部存储都是私有的Camera App无法访问应用程序的内部存储.在内部存储中获取图像的最佳方法是.
1)在app内使用自己的相机拍摄图像
要么
2)使用相机意图拍摄图像以捕获将图像保存到外部存储器的图片. onActivityResult将图像复制到应用程序的内部存储并从外部存储中删除.复制文件的代码可以在这个答案中找到. https://stackoverflow.com/a/4770586/4811470
内容总结
以上是互联网集市为您收集整理的android – 从Camera保存图像将图片意图保存到应用程序私有存储全部内容,希望文章能够帮你解决android – 从Camera保存图像将图片意图保存到应用程序私有存储所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。