2013-02-26 55 views
0

作爲我正在嘗試做的一個示例:當我從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)中檢查了剪輯的內容,但內容與額外內容相同。

回答

0

看完口袋博客後,Pocket確實爲Evernote專門設計了文章文本。股份intent剪輯是從ClipData class,並且只是一個額外的副本,並用它來代替,因爲api 11.

似乎沒有辦法 - 至少通過共享意圖和我的知識 - 到強制另一個應用程序提供特定的數據(類型)。

相關問題