裁剪照片时出现FileNotFoundException

时间:2010-06-01 19:04:36

标签: java android camera crop filenotfoundexception

我正在尝试裁剪要在动态壁纸中使用的照片,但是当裁剪活动尝试保存我的新裁剪图像时,我收到了FileNotFoundException。这是我正在使用的代码:

File file = new File(getFilesDir(), "wallpaper.jpg");

Intent intent = new Intent("com.android.camera.action.CROP");
intent.setData(uri);

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

intent.putExtra("outputX", metrics.widthPixels * 2);
intent.putExtra("outputY", metrics.heightPixels);
intent.putExtra("aspectX", metrics.widthPixels * 2);
intent.putExtra("aspectY", metrics.heightPixels);
intent.putExtra("scale", true);
intent.putExtra("noFaceDetection", true);
intent.putExtra("output", Uri.parse("file:/" + file.getAbsolutePath()));

startActivityForResult(intent, REQUEST_CROP_IMAGE);

wallpaper.jpg文件似乎存在于DDMS文件资源管理器中,所以我不确定我做错了什么。非常感谢任何建议。

2 个答案:

答案 0 :(得分:0)

http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

  

如果您使用的是API级别7或更低级别,   使用getExternalStorageDirectory()来   打开一个代表根的文件   外部存储。那你应该   在下面写下你的数据   目录:

     

/ Android设备/数据文件// /   这是你的Java风格   包名称,如   “com.example.android.app”。如果   用户的设备正在运行API级别8   或更高,他们卸载你的   应用程序,此目录和所有   其内容将被删除。

答案 1 :(得分:0)

getFilesDir()返回应用程序的privte目录。相机无法访问您的私人目录。要使用相机访问的wallpaper.jpg,请将其放在某个publix文件夹中。比如亚历克斯说它可以是SD卡根。固定代码是:

File file = new File(Environment.getExternalStorageDirectory(),  "wallpaper.jpg");