私がやろうとしていることの例として、PocketからEvernoteに記事を共有する場合、PocketはテキストをフォーマットしてEvernoteに記事全体を送信しますが、アプリと記事を共有する場合は、単にURLを受け取ります。共有する前に「処理中」ダイアログがあるため、Pocket側で実行されているコードがあることを知っています。
私の質問:PocketはEvernoteと共有していて、その出力をEvernote専用にフォーマットしていることを知っていますか、それともEvernoteはテキスト編集アプリとして登録されているので、URLだけでなく記事全体を共有するようにPocketに促しますか?
後者の場合、それはどのように行われますか?それ以外のタイプの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)
が、内容はエクストラと同じです。