私は最後の日かそこらを自分でやろうとして運がなかった.
私の特定のデバイス (galaxy nexus - 編集された画像が /mnt/sdcard/Edited に保存されている) が原因で、この件に関する限定的なアドバイスが期待どおりに機能しないのではないかと考えています。
私の問題は、サードパーティのアプリ (写真スタジオ) を使用して画像を編集する意図を開始すると、画像を編集できますが、実際に元に戻すことはできません。
どのような呼び出しコードを試しても、onActivityResponse へのコールバックを取得することはありません (ACTION_EDIT を含むすべての Google の結果を調べて、他の人がどのようにそれを行っているかを確認しました)。
応答がないので、別の方法を試す必要がありました-どこかの投稿によると、マニフェストでいくつかのカテゴリとデータタグを指定した場合、アプリに送信する画像の上に編集した画像を保存する必要があることがわかりました。 onResume が呼び出されたとき、私が送信した画像は常に同じ画像でした。
だから私は別のアプローチを試みてきました..
getContentResolver().registerContentObserver(Media.EXTERNAL_CONTENT_URI, true, myObserver);
そして、並べ替えの結果を取得します-画像が編集および保存されたときにonChangedメソッドが呼び出され、IDを受け取ることができますが、正しいuriを作成してファイルパスを取得することはできません
String columns[] = new String[]{ Media._ID, Media.DATA, Media.DISPLAY_NAME, Media.MIME_TYPE, Media.SIZE, Media.MINI_THUMB_MAGIC };
Uri image = ContentUris.withAppendedId(Media.EXTERNAL_CONTENT_URI, latestId);
Cursor cursor = application.managedQuery(image, columns, null, null, null);
ただし、上記のコード行を while ループで使用すると、常に NULLPOINTEREXCEPTION になります (これは、AlbumUploader を使用するために親切に提供されたものに基づいています)。
どこが間違っているのか、またはそのような状況で適切なファイルパスを取得するための回避策について、誰かが私に叫ぶことができることを願っています.
よろしく、読んでくれてありがとう。