public void showTestDialog() {
String mvnoMessage = mContext.getString(R.string.test1);
String http = "http://baidu.com;
String[] messages = mvnoMessage.split(http);
SpannableStringBuilder mvnoSpannableStringBuilder = new SpannableStringBuilder();
mvnoSpannableStringBuilder.append(messages[0]);
SpannableString mvnoSpan = new SpannableString(http);
mvnoSpan.setSpan(new ForegroundColorSpan(Color.GREEN),0,http.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mvnoSpan.setSpan(new URLSpan(http),0,http.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mvnoSpannableStringBuilder.append(mvnoSpan);
mvnoSpannableStringBuilder.append(messages[1]);
final AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setTitle(R.string.test2);
builder.setMessage(mvnoSpannableStringBuilder);
builder.setPositiveButton(R.string.okay, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.setCancelable(true);
final AlertDialog dialog = builder.create();
dialog.setCanceledOnTouchOutside(false);
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
dialog.show();
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
layoutParams.copyFrom(dialog.getWindow().getAttributes());
layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
dialog.getWindow().setAttributes(layoutParams);
TextView messageView = (TextView)dialog.getWindow().getDecorView().findViewById(android.R.id.message);
messageView.setText(mvnoSpannableStringBuilder);
messageView.setMovementMethod(LinkMovementMethod.getInstance());
CharSequence text = messageView.getText();
if(text instanceof Spannable){
int end = text.length();
Spannable sp = (Spannable)messageView.getText();
URLSpan[] urls = sp.getSpans(0, end, URLSpan.class);
SpannableStringBuilder style=new SpannableStringBuilder(text);
style.clearSpans();//should clear old spans
for(URLSpan url : urls){
MyURLSpan myURLSpan = new MyURLSpan(url.getURL(),mContext,dialog);
style.setSpan(myURLSpan,sp.getSpanStart(url),sp.getSpanEnd(url), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
messageView.setText(style);
}
}
private static class MyURLSpan extends ClickableSpan{
public String TAG = "MyURLSpan";
private String mUrl;
private Context mContext;
private Dialog mDialog;
MyURLSpan(String url,Context context,Dialog dialog) {
mUrl =url;
mContext = context;
mDialog = dialog;
}
@Override
public void onClick(View widget) {
// TODO Auto-generated method stub
Log.d(TAG, "onClick: MyURLSpan mUrl"+mUrl);
if(mDialog != null && mDialog.isShowing()){
mDialog.dismiss();
}
// com.android.chrome/com.google.android.apps.chrome.IntentDispatcher
Intent urlIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(mUrl));
urlIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
urlIntent.setClassName("com.android.chrome", "com.google.android.apps.chrome.IntentDispatcher");
mContext.startActivity(urlIntent);
}
}