package com.smartisanos.sidebar; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.text.Spannable; import android.text.style.URLSpan; import android.text.util.Linkify; import com.smartisanos.sidebar.util.BookmarkManager; import com.smartisanos.sidebar.util.LOG; public class ReceiveShareData extends Activity { private static final LOG log = LOG.getInstance(ReceiveShareData.class); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = getIntent(); if (intent == null) { return; } String action = intent.getAction(); if (action == null) { return ; } String type = intent.getType(); if (type == null) { return; } boolean isActionMatched = false; log.error("action ["+action+"], type ["+type+"]"); String callingPkg = getCallingPackage(); if (Intent.ACTION_SEND.equals(action)) { isActionMatched = true; } else if (Intent.ACTION_SEND_MULTIPLE.equals(action)) { isActionMatched = true; } if (isActionMatched) { String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT); log.error(sharedText); BookmarkManager.BookmarkItem item = parse(sharedText, callingPkg); if (item != null) { BookmarkManager.getInstance(this).addBookmark(item); } else { log.error("save bookmark failed by data parse err"); } } finish(); } private BookmarkManager.BookmarkItem parse(String text, String source) { BookmarkManager.BookmarkItem item = null; if (text == null) { return item; } try { Spannable.Factory instance = Spannable.Factory.getInstance(); Spannable sp = instance.newSpannable(text); Linkify.addLinks(sp, Linkify.WEB_URLS); URLSpan[] urls = sp.getSpans(0, sp.length(), URLSpan.class); if (urls != null && urls.length > 0) { item = new BookmarkManager.BookmarkItem(); item.fullText = text; URLSpan url = urls[0]; if (url != null) { int start = sp.getSpanStart(url); int end = sp.getSpanEnd(url); String urlStr = url.getURL(); item.content_uri = urlStr; String title = text.substring(0, start); if (title == null || title.trim().length() == 0) { //hoops title = text.substring(end); } item.title = title; item.source = source; item.time = System.currentTimeMillis(); } } } catch (Exception e) { item = null; e.printStackTrace(); } return item; } }