我是Android的新手,我已按照本教程https://developer.android.com/training/camera/photobasics.html进行操作,但我无法在/storage/emulated/0/Pictures
中创建文件夹。
private File createImageFile() throws IOException {
// Create an image file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = getPublicAlbumStorageDir("FileName");
if (storageDir ==null){
Toast.makeText(this, "Sorry no folder available", Toast.LENGTH_LONG).show();
return storageDir;
}
File image = File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
// Save a file: path for use with ACTION_VIEW intents
mCurrentPhotoPath = image.getAbsolutePath();
return image;
}
有人告诉我使用getPublicAlbumStorageDir()
https://developer.android.com/training/data-storage/files.html#java代替getExternalFilesDir(Environment.DIRECTORY_PICTURES)
public File getPublicAlbumStorageDir(String albumName) throws IOException {
// Get the directory for the user's public pictures directory.
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), albumName);
Log.i("File", file.getAbsolutePath());
if (!file.exists()) {
Log.e("Error", file.getAbsolutePath());
file.mkdirs();
if(!file.exists()){
Log.e("Error22", file.getAbsolutePath());
}
else{
Log.i("In", "you are in");
return file;
}
return null;
}
return file;
}
以下是我的权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我试图找到更多有关此问题的信息,唯一有效的项目是site,但有些操作已经过时了。
我用于测试Android 8.0.0
和Android 6.0.0
。
正在运作 如果您想在图库中创建一个文件夹,请按以下步骤操作:
FileProvider
标记内添加<application>
。然后在res或resource中创建一个名为xml
的文件夹,在里面创建一个名为file_paths
的xml文件,在文件副本中FileProvider
下的内容,但将path
更改为path="."
。
(如果你真的使用它,别忘了询问用户的权限。)
private void dispatchTakePictureIntent()
,复制该内容并static final int REQUEST_TAKE_PHOTO = 1
。为了工作, dispatchTakePictureIntent()
是您需要打电话的第一件事。 String mCurrentPath
并从上方复制Private File createImageFile()
。public File getPublicAlbumStorageDir(String albumName)
。如果您运行它将显示相机,您可以拒绝或接受您拍摄的照片。但是,您仍然需要添加更多代码。
String REQUEST_TAKE_PHOTO = 2;
@Override
protected void onActivity(int requestCode, int requestCode, Intent data){
if(requestCode == REQUEST_TAKE_PHOTO && resultCode == RESULT_OK){
//Show ImageView here if you want
galleryAddPic();
}
super.onActivityResult(requestCode, resultCode, data);
}
在https://developer.android.com/training/camera/photobasics.html#TaskGallery重复private void galleryAddPic()
中如果您想要显示拍摄的图像,请添加以下内容:
bitmap = BitmapFactory.decodeFile(f.getAbsolutePath());
imageView.setImageBitmap(bitmap);
就像这样,你的图像应该在你定义的FolderName中。
我决定制作这个小教程,因为我找不到这个问题的答案,在Android网站上也没有很好的解释。
非常感谢greenapps!我真的很感激!