0

私がやろうとしていることの例として、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)が、内容はエクストラと同じです。

4

1 に答える 1

0

Pocketブログを読んだ後、Pocketは実際にEvernoteの記事テキストを具体的にフォーマットしているようです。共有intentクリップはClipDataクラスからのものであり、単に追加の複製であり、API11以降で代わりに使用されます。

少なくとも共有の意図を介して、そして私の知る限り、別のアプリに特定のデータ(タイプ)を提供するように強制する方法はないように思われます。

于 2013-02-28T00:23:20.097 に答える