我正在尝试裁剪要在动态壁纸中使用的照片,但是当裁剪活动尝试保存我的新裁剪图像时,我收到了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文件资源管理器中,所以我不确定我做错了什么。非常感谢任何建议。
答案 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");