いくつかのダイアログの問題により、 createChooser メソッドを使用して ACTION_SEND を意図することはできません。共有アクションを使用して標準のアクティビティで独自のリストビューを作成する必要があります。
ただし、メニュー項目のみが actionProviderClass プロパティを持っていることがわかりました:android:actionProviderClass="android.widget.ShareActionProvider"
独自の共有アクション リストを作成するにはどうすればよいですか?
以下は、ShareActionProvider がどのように機能するかのコードです。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
/** Inflating the current activity's menu with res/menu/items.xml */
getMenuInflater().inflate(R.menu.share_menu, menu);
/** Getting the actionprovider associated with the menu item whose id is share */
mShareActionProvider = (ShareActionProvider) menu.findItem(R.id.menu_item_share).getActionProvider();
/** Setting a share intent */
mShareActionProvider.setShareIntent(getDefaultShareIntent());
return super.onCreateOptionsMenu(menu);
}
// Call to update the share intent
private void setShareIntent(Intent shareIntent) {
if (mShareActionProvider != null) {
mShareActionProvider.setShareIntent(shareIntent);
}
}
/** Returns a share intent */
private Intent getDefaultShareIntent(){
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, "SUBJECT");
intent.putExtra(Intent.EXTRA_TEXT,"Extra Text");
return intent;
}