Android官方开发文档Training系列课程中文版:分享简单数据之添加简单的分享行为

简介: 原文地址:http://android.xsoftlab.net/training/sharing/shareaction.html从Android4.0开始,使用ActionProvider可以更方便的在ActionBar上实现一个有效的、用户友好的分享按钮。

原文地址:http://android.xsoftlab.net/training/sharing/shareaction.html

从Android4.0开始,使用ActionProvider可以更方便的在ActionBar上实现一个有效的、用户友好的分享按钮。一个ActionProvider一旦依附到了ActionBar的菜单条目上,它会处理这个菜单条目的外观和行为。在ShareActionProvider这种情况中,你只需提供一个分享意图,它会处理剩下的事情。

Note:ShareActionProvider从API 14开始可用。

上图:ShareActionProvider在相册APP中的应用。

更新菜单声明

如果要开始使用ShareActionProvider,需要在菜单资源文件中相应的< 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>

这样就定义了ShareActionProvider对菜单外观与行为的代理职责。不过,你还是需要告诉提供者Provider你要分享的东西。

设置分享意图

为了可以使ShareActionProvider运行,你必须给它提供一个分享意图。这个分享意图应该与课程Sending Simple Data to Other Apps中描述的一致,需要有行为ACTION_SEND以及附加数据集比如EXTRA_TEXT或EXTRA_STREAM。为了分配一个共享意图,首先要找到在Activity或者Fragment中填充的对应的菜单条目MenuItem。接下来,调用MenuItem.getActionProvider()方法接收一个ShareActionProvider的实例。使用setShareIntent()来更新与共享意图相关的那个行为条目:

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);
    }
}

在创建菜单期间,你可能只需要设置一次分享意图,或者你可能想在UI改变的时候通过设置它来更新它。举个例子,当你在全屏状态下浏览照片的时候,分享意图会随着照片的滑动而改变。

有关ShareActionProvider的进一步讨论,请参见Action Bar指南。

目录
相关文章
|
3月前
|
安全 API Android开发
Android网络和数据交互: 解释Retrofit库的作用。
Android网络和数据交互: 解释Retrofit库的作用。
38 0
|
3月前
|
安全 网络协议 API
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
29 0
|
3月前
|
Android开发 开发者
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
21 0
|
15天前
|
XML Java Android开发
Android每点击一次按钮就添加一条数据
Android每点击一次按钮就添加一条数据
21 1
|
26天前
|
Java Android开发
Android开发系列全套课程
本系列课程面向有java基础,想进入企业从事android开发的计算机专业者。学习搭配实战案例,高效掌握岗位知识。
17 1
|
1月前
|
存储 Android开发 C++
【Android 从入门到出门】第五章:使用DataStore存储数据和测试
【Android 从入门到出门】第五章:使用DataStore存储数据和测试
30 3
|
2月前
|
JavaScript Java 数据安全/隐私保护
安卓逆向 -- POST数据解密
安卓逆向 -- POST数据解密
24 2
|
3月前
|
编解码 测试技术 开发工具
如何实现Android视音频数据对接到GB28181平台(SmartGBD)
如何实现Android视音频数据对接到GB28181平台(SmartGBD)
|
3月前
|
数据采集 编解码 图形学
Android平台Unity下如何通过WebCamTexture采集摄像头数据并推送至RTMP服务器或轻量级RTSP服务
Android平台Unity下如何通过WebCamTexture采集摄像头数据并推送至RTMP服务器或轻量级RTSP服务
|
3月前
|
JSON Java Android开发
Android网络和数据交互: 请解释Android中的JSON解析库,如Gson。
Android网络和数据交互: 请解释Android中的JSON解析库,如Gson。
24 0