Android 试图将图片保存到尚未创建的特定图片文件夹
我设法将Android 试图将图片保存到尚未创建的特定图片文件夹,android,camera,save,directory,image,Android,Camera,Save,Directory,Image,我设法将photo1.jpg保存到我在SD卡上创建的Pictures/mockFolder中,以下是代码供将来参考 public class CameraActivity extends Activity { final int PICTURE_ACTIVITY = 1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInst
photo1.jpg
保存到我在SD卡上创建的Pictures/mockFolder
中,以下是代码供将来参考
public class CameraActivity extends Activity
{
final int PICTURE_ACTIVITY = 1;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
String dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/mockFolder/";
File newdir = new File(dir);
newdir.mkdirs();
String file = dir + "photo1.jpg";
File newfile = new File(file);
try {
newfile.createNewFile();
} catch (IOException e) {}
Uri outputFileUri = Uri.fromFile(newfile);
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(cameraIntent, PICTURE_ACTIVITY);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
AlertDialog msgDialog;
if (resultCode == RESULT_CANCELED) {
msgDialog = createAlertDialog("Alert", "Picture was not saved. Please try again.", "OK");
} else {
msgDialog = createAlertDialog("Alert", "Picture was saved successfully.", "OK");
}
msgDialog.show();
}
private AlertDialog createAlertDialog(String title, String msg, String buttonText){
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
AlertDialog msgDialog = dialogBuilder.create();
msgDialog.setTitle(title);
msgDialog.setMessage(msg);
msgDialog.setButton(buttonText, new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int idx){
finish();
}
});
return msgDialog;
}
public void finish()
{
super.finish();
}
}
您可能还必须创建新文件。
完成
文件File=新文件(路径)后
,调用createNewFile()
或者更确切地说:
String dir = Environment.DIRECTORY_PICTURES + "mockFolder/";
String name = "photo1.jpg";
File file = new File(dir, name);
file.createNewFile();
您可以通过调用
newFolder.mkdirs()
而不是newFolder.mkdir()
来改进代码mkdirs()
在指定的路径中创建所需的所有文件夹
另外,在设置path变量时,您忘记在Environment.DIRECTORY\u PICTURES
之后添加斜杠
此外,请确保您的应用程序具有写入sd卡的权限
将此添加到AndroidManifest.xml:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
创建文件夹后,不会立即在库中找到该文件夹。Gallery需要重新扫描SD卡,以检测自上次检查以来创建的新文件夹/文件。@kaciula那么我如何确定它是否已被创建?您可以在手机上激活usb共享并手动查看文件夹。这一点很好,尽管我在发布问题并发现问题后一直在编辑代码。谢谢你!我已经编辑了我的答案。您是否在应用程序中设置了写入sd卡的权限?这就解释了活动暂停的原因。谢谢,我会尝试一下,然后再给你回复。我不知道我在写SD卡。我希望写内存,这可能吗?这似乎没什么区别。我也检查了SD卡,但没有创建任何内容。再次更新了答案。您需要指定图片的完整路径,以便相机应用程序知道在哪里保存图片。
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);