0

我正在尝试裁剪一张照片以在动态壁纸中使用,但是当裁剪活动尝试保存我的新裁剪图像时,我收到了 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 文件资源管理器中,所以我不确定我做错了什么。任何意见是极大的赞赏。

4

2 回答 2

0

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

如果您使用 API 级别 7 或更低版本,请使用 getExternalStorageDirectory() 打开代表外部存储根目录的文件。然后,您应该将数据写入以下目录:

/Android/data//files/ 是你的 Java 风格的包名,比如“com.example.android.app”。如果用户的设备运行 API 级别 8 或更高版本并且他们卸载了您的应用程序,则此目录及其所有内容将被删除。

于 2010-06-01T19:44:05.473 回答
0

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

File file = new File(Environment.getExternalStorageDirectory(),  "wallpaper.jpg");
于 2010-06-01T23:34:55.987 回答