ShareActionProvider的简单用法
2015-10-10 16:20
393 查看
如果你的应用需要分享一些消息或者图片,那么你的手机上很可能已经有另一个应用具备此种功能了。例如你想把应用中的某个图片作为附件以邮件的形式发 送出去,那么你真得没有必要自己再写一个专门发送邮件的Activity。我们可以借助ShareActionProvider。
在ActionBar中添加分享功能会使得应用更加高效友好。Android4.0(API等级14)引入的 ActionProvider类使得分享功能变得更加的简单。一旦ActionProvider被绑定到Action Bar的一个菜单中,它就能处理那一项的显示和反应。在ShareActionProvider的实例中,只需提供分享的Intent,其他的会被 ShareActionProvider自行处理。
首先在res/menu/main.xml中添加一个菜单项:
然后在Activity的onCreateOptionsMenu()方法里设置菜单项,主要是为这个ShareActionProvider指定intent:
最后别忘了添加必要的字符串资源:
res/values/strings.xml
在ActionBar中添加分享功能会使得应用更加高效友好。Android4.0(API等级14)引入的 ActionProvider类使得分享功能变得更加的简单。一旦ActionProvider被绑定到Action Bar的一个菜单中,它就能处理那一项的显示和反应。在ShareActionProvider的实例中,只需提供分享的Intent,其他的会被 ShareActionProvider自行处理。
首先在res/menu/main.xml中添加一个菜单项:
<item android:id="@+id/action_share" android:showAsAction="ifRoom" android:title="@string/action_share" android:actionProviderClass="android.widget.ShareActionProvider" />
然后在Activity的onCreateOptionsMenu()方法里设置菜单项,主要是为这个ShareActionProvider指定intent:
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); // Locate MenuItem with ShareActionProvider MenuItem item = menu.findItem(R.id.action_share); // Fetch and store ShareActionProvider if (item != null) { mShareActionProvider = (ShareActionProvider) item.getActionProvider(); if (!setShareIntent()){ menu.removeItem(R.id.action_share); //如果没有第3方应用可以直接用, //可以添加一个新的菜单项,可以跳转到自己的activity,然后处理等 } } return true; } // Call to update the share intent private boolean setShareIntent() { if (mShareActionProvider != null) { Intent shareIntent = new Intent(Intent.ACTION_SEND); shareIntent.setType("text/plain"); shareIntent.putExtra(Intent.EXTRA_TEXT, "这是要发送的文本"); PackageManager pm = getPackageManager(); //检查手机上是否存在可以处理这个动作的应用 List<ResolveInfo> infolist = pm.queryIntentActivities(shareIntent, 0); if (!infolist.isEmpty()) { mShareActionProvider.setShareIntent(shareIntent); return true; } return false; } return false; }
最后别忘了添加必要的字符串资源:
res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> … <string name="app_name">简单的分享动作</string> <string name="action_share">分享</string> … </resources>
相关文章推荐
- React-native module文件注释
- React组件定义验证属性值和默认值的配置
- Reactive Extensions
- java分布式编程之Reactor构架模式
- 整理了一份React-Native学习指南
- React Native -- The Life-Cycle of a Composite Component
- Reactor模型库之boost::asio::io_service与ACE_Reactor
- React Native -- StyleSheet
- ReactiveCocoa<一>
- React Native入门遇到的一些问题
- react native camera
- 这样好用的ReactiveCocoa,根本停不下来【转载】
- React框架
- React入门2
- React入门1
- React使用指南
- ReactJs 组件间数据传递
- reactor和proactor的区别
- ACE反应器(Reactor)模式(4)
- ACE反应器(Reactor)模式(3)