文档章节

启动Intent之前先检查是否有合适的接收者

daveztong
 daveztong
发布于 2014/11/06 21:25
字数 267
阅读 23
收藏 0
有这么一种情况,当我们的App需要使用到拍照功能时,通常我们可以调用其他有拍照功能的App,而不需要自己实现,如果你对照片的要求不是很高的话,简单的几行代码就可以搞定:
private void takePictureIntent(int actionCode) {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(takePictureIntent, actionCode);
}
但是还有个问题需要考虑,如果用户的手机没有拍照功能怎么办呢(当然当下这种情况很少),除了这个问题另外一种情况是用户的手机拍照功能损坏了怎么办呢?这时候我们可以在启动Intent之前先进行检查是否有合适的App能接收Intent的请求,这样不仅是对用户的友好,也是为了防止App意外崩溃的情况出现。检查代码如下:
public static boolean isIntentAvailable(Context context, String action) {
    final PackageManager packageManager = context.getPackageManager();
    final Intent intent = new Intent(action);
    List<ResolveInfo> list =
            packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
    return list.size() > 0;
}
OK,Try it yourself!

© 著作权归作者所有

daveztong
粉丝 4
博文 93
码字总数 21482
作品 0
成都
程序员
私信 提问
Android源码解析四大组件系列(七)---广播的发送过程

本篇文章的目录 1、广播数据结构分析 2、线程的切换 3、processNextBroadcast分析 3.1、处理并行广播 3.2、处理Pending广播 3.3、处理有序广播 3.4、获取下一条广播 3.5、检查是否是动态广播...

LooperJing
2017/07/19
0
0
BroadCastReceiver

BroadcastReceiver   在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的 Broadcast进行过滤接受并响应的一类组件。 下面将详细的阐...

攀爬的小瓜牛
2014/09/04
43
0
android 广播接收者--BroadcastReceiver

BroadcastReceiver初识: 广播接收者(BroadcastReceiver)用于接收广播Intent,广播Intent的发送是通过调用Context.sendBroadcast()、Context.sendOrderedBroadcast()来实现的。通常一个广播...

长平狐
2012/09/03
1K
0
总结全面的广播机制

BroadCastReceiver 源码位于: framework/base/core/java/android.content.BroadcastReceiver.java 广播接收者( BroadcastReceiver )用于接收广播 Intent ,广播 Intent 的发送是通过调用 ......

天高空
2012/03/20
1K
1
Android 中的BroadCastReceiver

BroadCastReceiver 简介 (末尾有源码) BroadCastReceiver 源码位于: framework/base/core/java/android.content.BroadcastReceiver.java 广播接收者( BroadcastReceiver )用于接收广播 ......

等待流星
2014/03/06
98
0

没有更多内容

加载失败,请刷新页面

加载更多

Nginx 快速安装详解

一、Nginx Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамбле...

网络小虾米
9分钟前
3
0
技术分享 | slave_relay_log_info 表认知的一些展开

作者:胡呈清 slave_relay_log_info 表是这样的: mysql> select * from mysql.slave_relay_log_info\G *************************** 1. row *************************** Number_of_lin......

爱可生
12分钟前
2
0
nginx配置http访问自动跳转到https

server {listen 80;server_name www.域名.com;rewrite ^(.*) https://$server_name$1 permanent;}server {listen 443;server_name www.域名.com;root /home/www;ssl on;......

很好亦平凡ms
12分钟前
2
0
SpreadJS:一款中国研发的类Excel开发工具,功能涵盖Excel的 95% 以上

Excel 作为一款深受用户喜爱的电子表格工具,借助其直观的界面、出色的计算性能、数据分析和图表,已经成为数据统计领域不可或缺的软件之一。 基于Excel对数据处理与分析的卓越表现,把Excel...

葡萄城技术团队
12分钟前
2
0
用javafx框架tornadofx做了个天气预报的程序

class WeatherApp : App(WeatherView::class)class WeatherView : View("十五天天气预报") { val weatherVM: WeatherViewModel by inject() val controller: WeatherController by......

oschina4cyy
16分钟前
2
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部