@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); if (weChatUtils.getIWXAPI().isWXAppInstalled()) { inflater.inflate(R.menu.main_wechat, menu); } else { inflater.inflate(R.menu.main, menu); } MenuItem shareItem = menu.findItem(R.id.action_share); android.support.v4.view.ActionProvider actionProvider = MenuItemCompat.getActionProvider(shareItem); if (null != actionProvider && actionProvider instanceof ShareActionProvider) { mShareActionProvider.setShareHistoryFileName( ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME); // mShareActionProvider.setShareIntent(Utils.getShareRawIntent(this)); mShareActionProvider.setOnShareTargetSelectedListener( new ShareActionProvider.OnShareTargetSelectedListener() { @Override public boolean onShareTargetSelected( ShareActionProvider shareActionProvider, Intent intent) { updateShareIntent(); return false; } }); updateShareIntent(); for (int i = 0; i < menu.size(); i++) { MenuItem item = menu.getItem(i); if (item.getItemId() == R.id.action_share) { View itemChooser = MenuItemCompat.getActionView(item); if (itemChooser != null) { itemChooser.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { EFLogger.i(TAG, "onClick"); ScreenshotUtils.shotBitmap(MainActivity.this, shareFileName); } }); } } } } return super.onCreateOptionsMenu(menu); }
/** * Defines a default (dummy) share intent to initialize the action provider. However, as soon as * the actual content to be used in the intent is known or changes, you must update the share * intent by again calling mShareActionProvider.setShareIntent() */ private Intent updateShareIntent() { if (null == appPreference) { return null; } final String text = String.format(getString(R.string.share_text_full_total), appPreference.getTotalNumber()); takeScreenshot(); Intent intent = Utils.getShareIntent( MainActivity.this, MainActivity.this.getString(R.string.app_name), text, shareFileName); if (null != mShareActionProvider) { // mShareActionProvider.setShareIntent(Utils.getShareRawIntent(this)); mShareActionProvider.setShareIntent(intent); } return intent; }