2019独角兽企业重金招聘Python工程师标准>>>

有这么一种情况,当我们的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!

转载于:https://my.oschina.net/javaTechLover/blog/341670

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

  1. 探索Activity之启动Intent Flag和taskAffinity

    引用上文生命周期和launchMode介绍, Activity的生命周期实际上比我们想象的复杂得多. 本文主要通过实例, 来探索下Activity的启动Intent Flag以及taskAffinit ...

  2. 1、Apache启动失败,请检查相关配置。√MySQL5.1已启动。解决方案:

    问题: 1.Apache启动失败,请检查相关配置.√MySQL5.1已启动. 今天使用APMServ5.2.6在本地电脑架设网站,不论是改端口还是关闭SSL都无法启动Apache. 研究了好久终于解决 ...

  3. apache启动失败_请检查相关配置.√mysql5.1已启动._1、Apache启动失败,请检查相关配置-百度经验...

    前几天电脑系统崩溃了,后边到服务中心重新恢复了系统,但是回来使用APMServ 5.2.6发现:1.Apache启动失败,请检查相关配置.√MySQL5.1已启动. 系统的各种服务我都检查过了,都是正 ...

  4. 方式SingleTask 启动Intent设置 不能如愿打开需要的Activity

    问题解决记录: 环境:APP主界面的启动方式SingleTask. 当主界面在前台的时候,全局Application接收到广播,打开SingleTask本APP语音通话界面,一切操作正常. 问题出现: ...

  5. android intent actionview,android – 检查Intent.ACTION_VIEW上的用户操作

    正如Android Developer在 Activities上所写 In other protocols (such as ACTION_MAIN or ACTION_VIEW), you may ...

  6. apmserv mysql5.1启动失败_APMServ Apache启动失败及MySQL5.1启动失败,请检查相关配置 解...

    出现这个问题从网上查了查主要有以下原因: 1.注意目录文件不能含有中文(这个比较常见). 2.去掉ssl的勾试试 3.80端口被占用=>改端口,如8080或81 [或者找到My sql安装目录下 ...

  7. 解决docker容器因报错无法启动的问题,检查、修复容器错误并重启

    问题复现 使用: sudo docker ps -a 查看当前的docker容器: 我们想启动name为[docker-mongo]的这个容器,因此要执行 sudo docker start dock ...

  8. Activity、Task、Application关系+Intent启动Flag

    什么是Android  Application? 简单来说,一个apk文件就是一个Application. 任何一个AndroidApplication基本上是由一些Activities组成,当用户与 ...

  9. Android使用Intent启动Service的Intent必须是显式的

    今天使用Intent来启动Service时,代码如下: //为 Intent设置Action属性 intent.setAction("com.hust.service");star ...

最新文章

  1. mysql数据库导出后乱码问题_MySQL导入导出数据出现乱码的解决办法
  2. 273. 整数转换英文表示(模拟)
  3. 例子简单说说C# ref和out
  4. .NET简谈插件系统开发模式
  5. 老男孩和门户网站学生聊天整理
  6. 微信小程序数据拼接_微信小程序使用原生WebSokcet实现断线重连及数据拼接
  7. The New Villa
  8. opencv 梯度幅值_20、 OpenCV导数和梯度
  9. 【Lingo】线性规划
  10. CAD如何一键解决批量打印
  11. MatLab绘制直方图
  12. python 实验七 字典与集合 (上)
  13. 血仍未冷——写在37岁生日
  14. 智慧城市(大数据,物联网,云计算之应用)
  15. 学习并行计算(CUDA Python)-1-初尝试
  16. c语言二重指针做参数,C语言二重指针的运用
  17. python的意思是什么_python-x%2 == 0是什么意思?
  18. 黄金圈法则 Golden Circle
  19. 大家都在聊内卷,究竟内卷是什么意思,互联网行业真的内卷了么?
  20. 复制页面的html代码怎么写,网页复制不了的文字怎么办?学会这5个方法,全网文档随意复制...

热门文章

  1. Bug 险中求: 作为新手,我怎样才能快速找到不和别人重复的第一个 bug?
  2. B树,B+树,红黑树应用场景AVL树,红黑树,B树,B+树,Trie树
  3. VRRP协议与keepalived原理及功能实例演示
  4. 思科钱伯斯:云安全是根本
  5. Java进程与子进程交互
  6. 前端开发学习之——dom ready和window onload的区别
  7. 设计模式系列 12-- 职责链模式
  8. Ubuntu 安装 CLI 并运行 ASP.NET Core 1.0
  9. Linux中运行c程序,与系统打交道
  10. System.getProperty的用法