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 /は、「com.example.android.app」などのJavaスタイルのパッケージ名です。ユーザーのデバイスがAPIレベル8以上を実行していて、アプリケーションをアンインストールすると、このディレクトリとそのすべてのコンテンツが削除されます。

于 2010-06-01T19:44:05.473 に答える
0

getFilesDir() は、アプリケーションのプライベート ディレクトリを返します。カメラがプライベート ディレクトリにアクセスできません。カメラで wallpaper.jpg にアクセスできるようにするには、publix フォルダーに配置します。たとえば、アレックスが言ったように、それはSDカードのルートになる可能性があります。固定コードは次のようになります。

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