跟Google學習Android開發-起始篇-共享內容(3)

7.3 添加一個簡單的分享操作


隨着Android 4.0API等級14)對ActionProvider的引入,在操作欄上實現有效且用戶友好的分享操作,變得更加簡單了。一個ActionProvider,一旦附在操作欄的某個菜單項,要同時處理該項的外觀和行爲。在使用ShareActionProvider的情況下,你只要提供了一個分享意圖,它會完成剩下的工作。

注:  ShareActionProvider 只在API等級14和更高的版本中才開始可用。


1相冊應用程序中的ShareActionProvider


更新菜單聲明


開始使用ShareActionProviders,首先在你的菜單資源文件爲對應的<item>定義AndroidactionProviderClass屬性:

<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>

這代表該項中ShareActionProvider的外觀和功能職責 。但是,你需要告訴提供者(provider)你想要分享的東西。


設置分享意圖


爲了實現ShareActionProvider功能,你必須給它提供一個分享意圖。這一分享意圖應該跟“將內容發送到其他應用程序那節課所描述的一樣,使用ACTION_SEND操作並通過額外信息像EXTRA_TEXTEXTRA_STREAM設置附加的數據。要指定一個分享意圖,當你在您的活動片段中填充菜單資源時,首先找到相應的菜單項。接下來,調用MenuItem.getActionProvider()檢索一個ShareActionProvider實例。使用setShareIntent()更新與操作項關聯的意圖。下面是一個例子:


private ShareActionProvider mShareActionProvider;
...

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflatemenu resource file.
    getMenuInflater().inflate(R.menu.share_menu, menu);

    // LocateMenuItem with ShareActionProvider
    MenuItem item = menu.findItem(R.id.menu_item_share);

    // Fetch andstore ShareActionProvider
    mShareActionProvider = (ShareActionProvider) item.getActionProvider();

    // Return trueto display menu
    return true;
}

// Call to update the share intent
private void setShareIntent(Intent shareIntent) {
    if (mShareActionProvider != null) {
        mShareActionProvider.setShareIntent(shareIntent);
    }
}


在菜單的創建過程中您可能只需要設置一次共享意圖,或者您可能想把它設置好,然後在UI變化時再更新它。例如,當您在相冊應用程序中全屏瀏覽照片時,切換照片分享意圖也會跟着變化。

有關ShareActionProvider對象的進一步討論,請查閱操作欄指南。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章