ShareActionProvider 提供一种简单的方式通过Intent发送数据给其他application,如Google+ 微信等。 ShareActionProvider一般嵌入到当前UI中。
要使用 ShareActionProvider 必须在menu 资源中定义 android:actionProviderClass
如下所示:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_item_share"
android:showAsAction="ifRoom"
android:title="Share"
android:actionProviderClass=
"android.widget.ShareActionProvider" />
...
</menu>
下来就要准备Intent 让ShareActionProvider来share 数据.
private ShareActionProvider mShareActionProvider;
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate menu resource file.
getMenuInflater().inflate(R.menu.share_menu, menu);
// Locate MenuItem with ShareActionProvider
MenuItem item = menu.findItem(R.id.menu_item_share);
// Fetch and store ShareActionProvider
mShareActionProvider = (ShareActionProvider) item.getActionProvider();
// Return true to display menu
return true;
}
// Call to update the share intent
private void setShareIntent(Intent shareIntent) {
if (mShareActionProvider != null) {
mShareActionProvider.setShareIntent(shareIntent);
}
}
上面的sample code中现在onCreateOptionsMenu 中找到ShareActionProvider。然后用setShareIntent来设定需要share的Intent.
然后一般会在listener的回调函数中调用setShareIntent。
如下所示:
private final ViewPager.OnPageChangeListener mOnPageChangeListener
176 = new ViewPager.OnPageChangeListener() {
177
178 @Override
179 public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
180 // NO-OP
181 }
182
183 @Override
184 public void onPageSelected(int position) {
185 setShareIntent(position);
186 }
187
188 @Override
189 public void onPageScrollStateChanged(int state) {
190 // NO-OP
191 }
192 };
要使用 ShareActionProvider 必须在menu 资源中定义 android:actionProviderClass
如下所示:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_item_share"
android:showAsAction="ifRoom"
android:title="Share"
android:actionProviderClass=
"android.widget.ShareActionProvider" />
...
</menu>
下来就要准备Intent 让ShareActionProvider来share 数据.
private ShareActionProvider mShareActionProvider;
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate menu resource file.
getMenuInflater().inflate(R.menu.share_menu, menu);
// Locate MenuItem with ShareActionProvider
MenuItem item = menu.findItem(R.id.menu_item_share);
// Fetch and store ShareActionProvider
mShareActionProvider = (ShareActionProvider) item.getActionProvider();
// Return true to display menu
return true;
}
// Call to update the share intent
private void setShareIntent(Intent shareIntent) {
if (mShareActionProvider != null) {
mShareActionProvider.setShareIntent(shareIntent);
}
}
上面的sample code中现在onCreateOptionsMenu 中找到ShareActionProvider。然后用setShareIntent来设定需要share的Intent.
然后一般会在listener的回调函数中调用setShareIntent。
如下所示:
private final ViewPager.OnPageChangeListener mOnPageChangeListener
176 = new ViewPager.OnPageChangeListener() {
177
178 @Override
179 public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
180 // NO-OP
181 }
182
183 @Override
184 public void onPageSelected(int position) {
185 setShareIntent(position);
186 }
187
188 @Override
189 public void onPageScrollStateChanged(int state) {
190 // NO-OP
191 }
192 };