5

私は、WhatsApp、Twitter、Facebook、GMailなどのソーシャルネットワークでカスタムメッセージを共有するために、intentとAction.SENDを使用しています。GmailやFacebook以外のアプリケーションではすべて問題ありません。Facebookでも何かを共有するようにコードをカスタマイズするにはどうすればよいですか?Facebook SDKを使用してFacebookで問題なく共有していますが、インテントを使用して共有したいと思います。

これは私が使用するものです:

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, knowTitle+"Read the full article via MomsApp by EnfaMama A+ at http://meadjohnsonasia.com.my/mobileapp");

sendIntent.putExtra(Intent.EXTRA_SUBJECT, "I just read "+knowTitle);
sendIntent.setType("*/*");
startActivity(Intent.createChooser(sendIntent, "Share Your Favorite Article"));
4

3 に答える 3

5

私が実際に行ったことは、インテントハンドラーの選択されたターゲットをインターセプトすることでした。これは、アクションプロバイダーを使用して行うことができます。onclick でインテントを開始する項目を作成したとします。これを行うために、actionprovider をインスタンス化してそうすることができます。この actionprovider には setOnShareTargetSelectedListener を設定して、別の方法で処理したい (またはまったく処理したくない ^^) インテントをインターセプトできます。アクションプロバイダーを構成する方法については、以下のコードを参照してください。

 actionProvider.setShareIntent(createShareIntent());
    actionProvider.setOnShareTargetSelectedListener(new OnShareTargetSelectedListener(){

        @Override
        public boolean onShareTargetSelected(ShareActionProvider source,
                Intent intent) {
            if ("com.facebook.katana".equals(intent.getComponent().getPackageName()) && mfacebooksharer != null) {
                mfacebooksharer.shareStatus(subject, text);
                  return true;
                }
                return false;
        }

    });

facebook が選択されるたびに、mfacebooksharer を使用してインテントを処理し、facebook API に従います。もちろん、その actionrpovider にはインテントが必要です。(意図を持って作業したかったのと同じように)。以下のメソッドを使用してインテントを作成します。

 private Intent createShareIntent() {
        intentsetter.setIntentleave(true);
        Intent shareIntent = new Intent(Intent.ACTION_SEND);
        shareIntent.setType("text/plain");
        shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
        shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, text);          
        return shareIntent;
    }
于 2012-11-28T08:33:04.433 に答える
4

Facebook のプラットフォーム ポリシーに従って、共有ダイアログに を使用して事前入力することはできません Intent.EXTRA_TEXT通常、これはバグであると考えられていますが、ここここに提出されたバグ レポートによると、Facebook はこれが事実ではないことを明確に述べています (バグではありません)。

プラットフォーム ポリシー、具体的にはプラットフォーム ポリシー IV.2について詳しく読むことができます。

プラットフォーム ポリシー IV.2 からの引用:

ユーザーがワークフローの早い段階でコンテンツを手動で生成しない限り、次の製品に関連付けられたフィールドに事前入力しないでください: ストリーム ストーリー (Facebook.streamPublish および FB.Connect.streamPublish の user_message パラメーター、およびストリームのメッセージ パラメーター)。公開)、写真 (キャプション)、ビデオ (説明)、メモ (タイトルとコンテンツ)、リンク (コメント)、および Jabber/XMPP。

これらのフィールドは、ユーザーが自分自身を表現するためのものです。これらのフィールドを事前に入力すると、ユーザーの声の信憑性が損なわれます。

アプリからストーリーを共有できる唯一の方法は、Facebook SDK を統合することです。これは、投稿によると、既に成功しています。それが利用可能な唯一のオプションです (残念ながら)。

于 2012-11-22T06:31:47.780 に答える
1

Android で Intent を使用すると、テキストなしでリンクのみを共有できます。

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, "http://www.google.ca");
startActivity(Intent.createChooser(intent, "Share with"));

うまくいきます。テキストとリンクを共有したい場合は、Facebook SDK for Android を使用する必要があります: https://github.com/facebook/facebook-android-sdk

于 2012-11-22T03:08:56.340 に答える