作为我正在尝试做的一个例子:当我将一篇文章从 Pocket 分享到 Evernote 时,Pocket 会格式化文本并将整篇文章发送到 Evernote,而当我与我的应用程序分享一篇文章时,我只会收到 URL。我知道在 Pocket 端正在执行代码,因为在共享之前有一个“处理”对话框。
我的问题:Pocket 是否知道它正在与 Evernote 共享并专门为 Evernote 格式化其输出,或者 Evernote 是否以某种方式注册为文本编辑应用程序并因此提示 Pocket 共享整篇文章而不仅仅是一个 URL?
如果是后者,它是如何完成的?我应该注册我的应用程序以接收除 以外的 mime 类型text/plain
吗?这是我目前用来接收文本的部分代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
rcvIntent = getIntent();
String rcvAction = rcvIntent.getAction();
String rcvType = rcvIntent.getType();
if (Intent.ACTION_SEND.equals(rcvAction) && "text/plain".equals(rcvType))
displaySentText(rcvIntent);
}
private void displaySentText (Intent rcvIntent) {
String sharedText = rcvIntent.getStringExtra(Intent.EXTRA_TEXT);
if (sharedText == null) return;
if (sharedText.startsWith("http://")) {
ConnectivityManager connMgr = (ConnectivityManager) getSystemService (Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
new DownloadWebpageText().execute(sharedText);
提前致谢!
编辑:
调试器没有提供太多信息。当我分享到 Evernote 时,它显示:
02-27 16:36:50.005: I/ActivityManager(2257): START u0 {act=android.intent.action.SEND typ=text/plain flg=0x80001 cmp=com.evernote/.note.composer.NewNoteAloneActivity (has clip) (has extras)} from pid 31094
当我分享到我的应用程序时,我会收到一条非常相似的消息:
02-27 16:37:39.700: I/ActivityManager(2257): START u0 {act=android.intent.action.SEND typ=text/plain flg=0x80001 cmp=st.olm.readmemberalpha/.WebText (has clip) (has extras)} from pid 31094
它们都是文本/纯文本,但内容不同。我还从(has clip)
上面检查了剪辑的内容,但内容与额外内容相同。