作爲我正在嘗試做的一個示例:當我從Pocket到Evernote共享一篇文章時,Pocket格式化文本並將完整文章發送至Evernote,而當我與我的應用程序,我只收到URL。我知道在Pocket的一邊執行代碼,因爲在分享之前有一個「處理」對話框。通過Android中的Share Intent接收特定內容
我的問題:Pocket知道它與Evernote共享並專門爲Evernote設置輸出格式,或者Evernote是否以某種方式註冊爲文本編輯應用程序,並因此提示Pocket分享整篇文章而不僅僅是一個URL?
如果是後者,它是如何完成的?我應該註冊我的應用程序以接收除text/plain
以外的MIME類型嗎?這裏是我目前用來接收文本的部分代碼:
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
他們都是text/plain的,但內容不同。我也從上面的(has clip)
中檢查了剪輯的內容,但內容與額外內容相同。