0

有什么方法可以检测使用共享操作提供程序时选择了哪个共享应用程序,以便我可以为不同的应用程序发送不同的消息?我正在为共享操作提供程序使用以下方法,

mShareActionProvider = (ShareActionProvider) menu.findItem(R.id.menu_item_share).getActionProvider();

        mShareActionProvider.setShareIntent(getDefaultShareIntent());

和意图,

 public Intent getDefaultShareIntent(){
              String message = Fname + Mobileno + Homeno + Workmail + Homemail
                + Gtalk + Skype + Address + Company + Title + Website;
      Intent shareIntent = new Intent(Intent.ACTION_SEND);
              shareIntent.putExtra(Intent.EXTRA_TEXT, message); 


         return shareIntent; 


    }
4

3 回答 3

6

更新:

最简单的解决方案是:

@Override
public boolean onShareTargetSelected(ShareActionProvider source, Intent intent) {
  String shareTarget = intent.getComponent().getPackageName();
  ...
}

无需复制文件或任何东西。


如果您碰巧使用后者,请从 Android 源或 ActionBarSherlock 复制一些文件:

  • ActivityChooserModel.java
  • ActivityChooserView.java
  • ShareActionProvider.java

确保您引用了这些文件,而不是您应用程序中的原始文件。

ActivityChooserModel.java中,修改:

if (mActivityChoserModelPolicy != null) {
  ResolveInfo info = getActivity(index);
  choiceIntent.putExtra("user_selected_activity", (info.activityInfo != null) ? info.activityInfo.packageName : info.serviceInfo.packageName);
  final boolean handled = mActivityChoserModelPolicy.onChooseActivity(this, choiceIntent);
  if (handled)
    return null;
}

并将所选活动的包名称存储到意图中。然后你可以在你的处理程序中阅读它:

@Override
public boolean onShareTargetSelected(ShareActionProvider source, Intent intent) {
  String shareTarget = intent.getStringExtra("user_selected_activity");
  ...
}

并根据所选活动决定以不同方式处理的内容。

于 2013-08-01T14:16:16.147 回答
3

试试这个。

myShareActionProvider.setOnShareTargetSelectedListener(new ShareActionProvider.OnShareTargetSelectedListener() {
            @Override
            public boolean onShareTargetSelected(ShareActionProvider source, Intent intent) {
                String shareTarget = intent.getComponent().getPackageName();
                return false;
            }
        });
于 2014-02-09T17:58:59.140 回答
2

看起来不像。但是没有什么能阻止您将其复制并粘贴到您的项目中并根据需要进行修改。

于 2013-03-21T05:05:22.073 回答