code: @Override
      public void onPrepareSubMenu(SubMenu subMenu) {
          // Clear since the order of items may change.
          subMenu.clear();
  
          ActivityChooserModel dataModel = ActivityChooserModel.get(mContext, mShareHistoryFileName);
          PackageManager packageManager = mContext.getPackageManager();
  
          final int expandedActivityCount = dataModel.getActivityCount();
          final int collapsedActivityCount = Math.min(expandedActivityCount, mMaxShownActivityCount);
  
          // Populate the sub-menu with a sub set of the activities.
          for (int i = 0; i < collapsedActivityCount; i++) {
              ResolveInfo activity = dataModel.getActivity(i);
              subMenu.add(0, i, i, activity.loadLabel(packageManager))
                  .setIcon(activity.loadIcon(packageManager))
                  .setOnMenuItemClickListener(mOnMenuItemClickListener);
          }
  
          if (collapsedActivityCount < expandedActivityCount) {
              // Add a sub-menu for showing all activities as a list item.
              SubMenu expandedSubMenu = subMenu.addSubMenu(Menu.NONE, collapsedActivityCount,
                      collapsedActivityCount,
                      mContext.getString(R.string.abs__activity_chooser_view_see_all));
              for (int i = 0; i < expandedActivityCount; i++) {
                  ResolveInfo activity = dataModel.getActivity(i);
                  expandedSubMenu.add(0, i, i, activity.loadLabel(packageManager))
                      .setIcon(activity.loadIcon(packageManager))
                      .setOnMenuItemClickListener(mOnMenuItemClickListener);
              }
          }
      }
docs: {@inheritDoc}