2

共有インテントを選択しているユーザーをインターセプトしたいのですが、ユーザーが Facebook を選択して Facebook SDK を起動した場合。

矛盾する API ドキュメントに混乱しています。 http://developer.android.com/reference/android/widget/ShareActionProvider.html

public void setOnShareTargetSelectedListener (ShareActionProvider.OnShareTargetSelectedListener listener)

Added in API level 14
Sets a listener to be notified when a share target has been selected. The listener can optionally decide to handle the selection and not rely on the default behavior which is to launch the activity

しかし、リスナーを見ると http://developer.android.com/reference/android/widget/ShareActionProvider.OnShareTargetSelectedListener.html

public abstract boolean onShareTargetSelected (ShareActionProvider source, Intent intent)

Added in API level 14
Called when a share target has been selected. The client can decide whether to perform some action before the sharing is actually performed.

Note: Modifying the intent is not permitted and any changes to the latter will be ignored.

Note: You should not handle the intent here. This callback aims to notify the client that a sharing is being performed, so the client can update the UI if necessary.

傍受できると言う人もいれば、傍受できないと言う人もいます。リスナーの戻り値をいじることはできないようですが、誰かがこれに対する回避策や修正を持っているかどうか疑問に思っていました.

4

1 に答える 1

0

ShareActionProvider を構成する方法については、以下のコードを参照してください。

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;
        }
    });

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;
    }

出典: FaceBook Android でコンテンツを共有する

于 2015-02-19T23:27:52.140 に答える