Android分享中,如何过滤指定的应用,并且对不同的分享方式发送不同的内容?
2016-05-19 11:31
531 查看
Android分享中,如何过滤指定的应用,并且对不同的分享方式发送不同的内容?
安卓系统本身可以很简便的实现分享功能,因为我们只需向startActivity传递一个ACTION_SEND的Intent,系统就为我们弹出一个应用程序列表,如果我们再指定intent为chooser的方式,那么这个列表就就会有个指定的标题,如下:
这就是分享界面。
其实凡是以隐式intent调用activity,如果能处理该intent的应用有多个的话,都会出现一个选择应用的对话框,这种对话框除了列出应用列表,还为你提供是永久选择,还是只是这次选择。比如我们发送了这样一个浏览网页的intent:
注意上面的对话框只是单纯列出了应用,而且比分享对话框还多了两个选择方式的按钮,所以仅仅这样还不符合分享功能的需求。
分享的需求有两点:
每次都列出所有应用;
不再提示只是一次选择还是永久选择;
为此,我们需要通过Intent来创建chooser:
intent的createChooser方法调用后,上面提到的两个不符合需求的问题就不存在了,其实这就是分享功能的本质,他只不过是利用了Intent的机制而已。
利用系统的api实现分享的代码如下:
但是,第一:我想过滤掉蓝牙,
其次:我想对邮件分享详细的内容,对信息和微博等分享较简短的内容,对二维码扫描器只分享URL。
解决的办法是得到所有能处理
ACTION_SEND的应用程序包名,然后根据名字来过滤或者特殊处理。主要用到
getPackageManager().queryIntentActivities方法。
initShareIntent(
"qq"
);是没有用的,你可以先将他们打印出来看长什么样子,然后在调用。以下是我总结的一些常用应用包名:
相关文章推荐
- Android:手把手教你打造可缩放移动的ImageView(上)
- Android:退出程序后保持Serivce开启不关闭
- Android深度探索(卷1)HAL与驱动开发 虚拟环境的安装
- Android初学习 - AsyncTask的使用
- Android自适应不同分辨率或不同屏幕大小的layout布局(横屏|竖屏)
- Android6.0的通讯录获取
- android常用开源项目
- android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original
- 两分钟彻底让你明白Android Activity生命周期(图文)!
- android设计模式之工厂模式
- Android的Drawable缓存机制源码分析
- 第一次使用Android Studio时你应该知道的一切配置
- Android的读写文件权限
- Android 完美实现图片圆角和圆形(对实现进行分析)
- Android开发笔记----Activity再学习(生命周期、启动模式、intent-filter)
- android 4.4 支持透明状态栏和透明导航栏
- ubuntu 12.04.5 LTS搭建海思android SDK编译环境遇到的问题总结
- Android探索之ContentProvider熟悉而又陌生的组件
- Android笔记----动画、属性动画
- Android传感器及简单应用