1

共有インテントを使用して内部ストレージに保存された画像ファイルを共有しようとしています。意図した後、画像ファイルが表示されません。

次のコードを使用して画像ファイルを保存しました

try {
    FileOutputStream fos = openFileOutput("twitterimage.jpg", Context.MODE_PRIVATE);
    // Writing the bitmap to the output stream
    bikeBm.compress(Bitmap.CompressFormat.JPEG, 100, fos);
    fos.close();
} catch (Exception e) {
    Log.e("saveToInternalStorage()", e.getMessage());
}

//インテントコード

File internalFile = getFileStreamPath("twitterimage.jpg");
Uri uri = Uri.fromFile(internalFile);

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM,new File(uri));
shareIntent.setType("image/jpeg");
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(Intent.createChooser(shareIntent, "send"));

上記の「uri」を使用してファイルの存在を確認すると、画像ファイルは内部ストレージに存在しますが、を使用してファイルを確認します

String file = "data/data/com.bike.app/twitterimage.jpg";
File f = new File(file);

ファイルが存在しないことを示しています。

この問題を解決するのを手伝ってください。

4

1 に答える 1

2

私が正しく推測している場合は、アプリケーション間で画像を共有したいと思います。問題はContext.MODE_PRIVATE、ファイルを作成するときに使用したため、他のアプリケーションがこのファイルにアクセスできないことです。

画像を共有するには、MediaProviderを使用してメディアへのアクセスを制限するか、単に使用するContext.MODE_WORLD_READABLEことができますが、ファイルは一般公開されます。

助けてくれることを願っています

于 2013-01-10T08:54:05.070 に答える