ボタンをクリックしてユーザーのSDカードに画像を保存する方法を知りたいです。誰かが私にそれを行う方法を教えてもらえますか?画像は.png形式であり、ドローアブルディレクトリに保存されます。その画像をユーザーのSDカードに保存するボタンをプログラムしたいと思います。
ファイル(あなたの場合は画像です)を保存するプロセスはここで説明されています: save-file-to-sd-card
ドローアブルに画像ic_launcherがあるとします。次に、この画像から次のようにビットマップオブジェクトを取得します。
Bitmap bm = BitmapFactory.decodeResource( getResources(), R.drawable.ic_launcher);
SDカードへのパスは、以下を使用して取得できます。
String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
次に、ボタンクリック時にSDカードに保存します。
File file = new File(extStorageDirectory, "ic_launcher.PNG");
FileOutputStream outStream = new FileOutputStream(file);
bm.compress(Bitmap.CompressFormat.PNG, 100, outStream);
outStream.flush();
outStream.close();
Android.permission.WRITE_EXTERNAL_STORAGE
権限を追加することを忘れないでください。
ドローアブルから保存するための変更されたファイルは次のとおりです。 SaveToSd 、完全なサンプルプロジェクト: SaveImage
私はその質問には実際の解決策はないと思います、それを行う唯一の方法は、次のようにsd_cardキャッシュディレクトリからコピーして起動することです:
Bitmap bm = BitmapFactory.decodeResource(getResources(), resourceId);
File f = new File(getExternalCacheDir()+"/image.png");
try {
FileOutputStream outStream = new FileOutputStream(f);
bm.compress(Bitmap.CompressFormat.PNG, 100, outStream);
outStream.flush();
outStream.close();
} catch (Exception e) { throw new RuntimeException(e); }
Intent intent = new Intent();
intent.setAction(Android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(f), "image/png");
startActivity(intent);
// NOT WORKING SOLUTION
// Uri path = Uri.parse("Android.resource://" + getPackageName() + "/" + resourceId);
// Intent intent = new Intent();
// intent.setAction(Android.content.Intent.ACTION_VIEW);
// intent.setDataAndType(path, "image/png");
// startActivity(intent);