package com.jasonchen.microlang.gallery; import android.app.Activity; import android.app.AlertDialog; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.text.TextUtils; import android.view.View; import android.widget.Toast; import com.jasonchen.microlang.R; import com.jasonchen.microlang.tasks.MyAsyncTask; import com.jasonchen.microlang.utils.Utility; import java.io.File; /** * jasonchen * 2015/04/10 */ public class LongClickListener implements View.OnLongClickListener { private Activity context; private String url; private String filePath; private PicSaveTask saveTask; public LongClickListener(Activity activity, String url, String path) { this.context = activity; this.url = url; this.filePath = path; } private String getString(int res) { return context.getString(res); } @Override public boolean onLongClick(View v) { String[] values = {getString(R.string.copy_link_to_clipboard), getString(R.string.share), getString(R.string.save_pic_album)}; new AlertDialog.Builder(context) .setItems(values, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case 0: ClipboardManager cm = (ClipboardManager) context.getSystemService( Context.CLIPBOARD_SERVICE); cm.setPrimaryClip(ClipData.newPlainText("sinaweibo", url)); Toast.makeText(context, getString(R.string.copy_successfully), Toast.LENGTH_SHORT).show(); break; case 1: Intent sharingIntent = new Intent(Intent.ACTION_SEND); sharingIntent.setType("image/jpeg"); if (!TextUtils.isEmpty(filePath)) { Uri uri = Uri.fromFile(new File(filePath)); sharingIntent.putExtra(Intent.EXTRA_STREAM, uri); if (Utility.isIntentSafe(context, sharingIntent)) { context.startActivity(Intent.createChooser(sharingIntent, getString(R.string.share))); } } break; case 2: saveBitmapToPictureDir(filePath); break; } } }).show(); return true; } private void saveBitmapToPictureDir(String filePath) { if (Utility.isTaskStopped(saveTask)) { saveTask = new PicSaveTask(context, filePath); saveTask.executeOnExecutor(MyAsyncTask.THREAD_POOL_EXECUTOR); } } }