Adding an Easy Share Action[增加一個簡單的分享Action]
- 這一課會介紹在
中添加一個高效率且比較友好的Share功能,會使用到ActionProvider(在Android 4.0上才被引進)。它會handle出現share功能的appearance與hehavior。在ShareActionProvider的例子裡面,你之需要提供一個share intent,剩下的就交給ActionBar
來做。ShareActionProvider
- 注意:ShareActionProvider是Android 4.0之後才有的。
-
【Android Training - 06】分享資料内容 [Lesson 3 - 在ActionBar上添加Share Action] Adding an Easy Share Action[增加一個簡單的分享Action]
Update Menu Declarations[更新菜單聲明]
使用ShareActionProvider的第一步,在你的menu對應item中定義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>
這表明了這個item的appearance與function需要與ShareActionProvider比對。然而,你還是需要告訴provider你想分享的内容。
Set the Share Intent[設定分享的intent]
為了能夠實作ShareActionProvider的功能,你必須提供給它一個intent。這個share intent應該像第一課講的那樣,帶有ACTION_SEND和附加資料(例如EXTRA_TEXT與 EXTRA_STREAM)的。如何使用ShareActionProvider,請看下面的例子:
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);
}
}
- 你也許在建立菜單的時候僅僅需要設定一次share intent就滿足需求了,或者說你可能想先設定share intent,然後根據UI的變化來對intent進行更新。例如,當你在Gallery裡面全圖檢視照片的時候,share intent會在你切換圖檔的時候進行改變。
- 想要檢視更多關于ShareActionProvider的内容,請檢視Action Bar 。
學習自:http://developer.android.com/training/sharing/shareaction.html,請多指教,謝謝!
轉載請注明出處: http://blog.csdn.net/kesenhoo,謝謝!