package org.qii.weiciyuan.ui.adapter; import org.qii.weiciyuan.R; import org.qii.weiciyuan.support.utils.GlobalContext; import org.qii.weiciyuan.support.utils.Utility; import org.qii.weiciyuan.support.utils.WebBrowserSelector; import org.qii.weiciyuan.ui.userinfo.UserInfoActivity; import android.app.AlertDialog; import android.app.Dialog; 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.os.Bundle; import android.provider.Browser; import android.support.v4.app.DialogFragment; import android.widget.Toast; /** * User: qii * Date: 13-3-26 */ public class LongClickLinkDialog extends DialogFragment { private Uri uri; public LongClickLinkDialog() { } public LongClickLinkDialog(Uri uri) { this.uri = uri; } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putParcelable("uri", uri); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null) { this.uri = savedInstanceState.getParcelable("uri"); } } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); CharSequence[] strangerItems = {getString(R.string.open), getString(R.string.copy)}; builder.setTitle(getStringContent()) .setItems(strangerItems, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case 0: Context context = getActivity(); if (uri.getScheme().startsWith("http")) { String url = uri.toString(); if (Utility.isWeiboAccountIdLink(url)) { Intent intent = new Intent(context, UserInfoActivity.class); intent.putExtra("id", Utility.getIdFromWeiboAccountLink(url)); context.startActivity(intent); } else if (Utility.isWeiboAccountDomainLink(url)) { Intent intent = new Intent(context, UserInfoActivity.class); intent.putExtra("domain", Utility.getDomainFromWeiboAccountLink(url)); context.startActivity(intent); } else { WebBrowserSelector.openLink(context, uri); } } else { Intent intent = new Intent(Intent.ACTION_VIEW, uri); intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName()); context.startActivity(intent); } break; case 1: ClipboardManager cm = (ClipboardManager) getActivity() .getSystemService(Context.CLIPBOARD_SERVICE); cm.setPrimaryClip( ClipData.newPlainText("sinaweibo", getStringContent())); Toast.makeText(GlobalContext.getInstance(), String.format( GlobalContext.getInstance().getString(R.string.have_copied), getStringContent()), Toast.LENGTH_SHORT).show(); break; } } }); return builder.create(); } private String getStringContent() { String d = uri.toString(); String newValue = ""; if (d.startsWith("org.qii.weiciyuan")) { int index = d.lastIndexOf("/"); newValue = d.substring(index + 1); } else if (d.startsWith("http")) { newValue = d; } return newValue; } }