我的应用程序中有大约 10 张图片,它们位于可绘制的资源中,而不是从服务器下载。
我需要分享这些图像。
我有这样的解决方案:将drawable转换为文件,保存并从文件夹共享文件。
当我有一张 SD 卡时,外部存储一切正常。但是当我使用 Nexus 5 时,例如(内部存储)它会保存一些文件,但不会共享它,因为格式不正常。
请帮助我进行内部存储或从drawable共享。
private void shareit()
{
Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.son);
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/jpeg");
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
icon.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
File f;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
// We can read and write the media
f=new File(Environment.getExternalStorageDirectory() + File.separator + "son.jpg");
}
else{
f = new File(getActivity().getApplicationContext().getCacheDir(), "son.jpg");
if(f.exists()){
Log.i("imageExistsInternal", "file is complete");
}
}
if(!f.exists())
f.mkdir();
share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(f));
startActivity(Intent.createChooser(share, "Share Image"));
}