package com.cjj.cartoon.util; import java.io.File; import java.io.FileOutputStream; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Bitmap.CompressFormat; import android.graphics.Canvas; import android.net.Uri; import android.os.AsyncTask; import android.os.Environment; import android.provider.MediaStore; import android.view.View; public class ShareViewTask extends AsyncTask<View, Object, String> { private String mName; private Context mContext; private static final String IMAGE_NAME = "share.jpg"; @Deprecated private String relativeTempPath = ""; private String chooserTitle = ""; private String extraSubject = ""; private String extraText = ""; private File tempDir; public ShareViewTask(Context context) { mContext = context; tempDir = context.getCacheDir(); } @Override protected String doInBackground(View... params) { final View v = params[0]; Bitmap shareBitmap = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.RGB_565); Canvas c = new Canvas(shareBitmap); v.draw(c); File imageFile = getImageFile(); try { FileOutputStream out = new FileOutputStream(imageFile); boolean success = shareBitmap.compress(CompressFormat.JPEG, 100, out); out.close(); if (success) { String path = imageFile.getAbsolutePath(); return MediaStore.Images.Media.insertImage(mContext.getContentResolver(), path, mName, mName); } } catch (Exception e) { e.printStackTrace(); } return null; } public String getChooserTitle() { return chooserTitle; } public String getExtraSubject() { return extraSubject; } public String getExtraText() { return extraText; } private File getImageFile() { File dir; if (relativeTempPath != null) { dir = new File(Environment.getExternalStorageDirectory(), relativeTempPath); } else { dir = tempDir; } dir.mkdirs(); File file = new File(dir, IMAGE_NAME); return file; } @Deprecated public String getRelativeTempPath() { return relativeTempPath; } @Override protected void onPostExecute (String result) { if (result != null) { final Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); intent.setType("image/jpeg"); intent.putExtra(Intent.EXTRA_STREAM, Uri.parse(result)); intent.putExtra(Intent.EXTRA_SUBJECT, extraSubject.replaceAll("@comic", mName)); intent.putExtra(Intent.EXTRA_TEXT, extraText.replaceAll("@comic", mName)); final Intent chooser = Intent.createChooser(intent, chooserTitle); mContext.startActivity(chooser); } } public void setChooserTitle(String chooserTitle) { this.chooserTitle = chooserTitle; } public void setExtraSubject(String extraSubject) { this.extraSubject = extraSubject; } public void setExtraText(String extraText) { this.extraText = extraText; } public void setName(String name) { mName = name; } @Deprecated public void setRelativeTempPath(String relativeTempPath) { this.relativeTempPath = relativeTempPath; } public void setTempDir(File tempDir) { this.tempDir = tempDir; } }