2

Androidデバイスの外部ストレージの写真フォルダーへのパスである文字列ファイル名があります。文字列を使用してopencvで画像を保存しています。次に、保存した画像を他のアプリと共有するための共有インテントを送信します。

Highgui.imwrite(filename, Image);
Log.d("WRITEPATH", filename);

LogCat では、WRITEPATH を取得します。

/storage/emulated/0/Pictures/MyImages/Image1.jpg

次に、filepath-string を uri に変換します。

Uri lastsavedUri=Uri.parse(new File(filename).toString())

そして、共有インテントを送信します。

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, SavedImages);
shareIntent.setType("image/*");
startActivity(Intent.createChooser(shareIntent, "Share images to.."));

SavedImagesは、複数のlastsavedUriを含む ArrayList です

残念ながら、共有しようとしている画像を見つけることができるアプリはありません。たとえば、[メールを送信] をクリックすると Gmail がクラッシュし、logcat エラーが表示される

10-07 10:19:47.265: E/Gmail(26264): サムネイルの向きを取得できません /storage/emulated/0/Pictures/MyImages/Image1.jpg 10-07 10:19:47.265: E/Gmail(26264 ): java.io.FileNotFoundException: コンテンツ プロバイダがありません: /storage/emulated/0/Pictures/MyImages/Image1.jpg

ファイルパス文字列を使用して画像を保存できるのに、保存した画像を共有できないのはなぜですか? パスが正しくありませんか?保存した画像への正しいパスを取得するにはどうすればよいですか?

4

1 に答える 1

5

私は試した

File saveFile = new File(filename);
SavedImages.add(Uri.fromFile(saveFile));

それ以外の

Uri lastsavedUri=Uri.parse(new File(filename).toString())
SavedImages.add(lastsavedUri);

そして今それは働いています。理由はわかりませんが、うまくいきます。

于 2013-10-07T15:34:51.387 に答える