做项目时遇到客户一个另类需求——“拍照必须使用系统相机”,当手机装有第三方相机时
但是客户是不允许用户用第三方相机的,因为第三方相机有的可以直接进行选择照片操作
但是客户要求照片必须是当前拍摄嘚。
上面是遇到的问题寻找解决方案,发现Intent可以通过setPackage设置包名来指定
要打开的应用安卓原生系统中照相机的包名是com.android.camera,通过测试在三
星等几个使用原生系统的手机中可以避免选择第三方相机直接调用了系统相机但是在
魅族、小米等手机中仍然弹出相机选择界面,通过查看这几款手机自带相机的apk发现
它们的包名并不是com.android.camera,试着将包名改为魅族小米的包名测试通过
可以直接指定系统相机;
虽然找到了原因,但是我们总不能每款手机都做一个适配来指定包名吧还好安卓
允许我们获取手机中安装的所有apk的信息。我的解决方案是遍历手机中所囿安装的软件
判断软件的名称为"相机,照相机,照相,拍照,美颜摄像头,Camera,camera"等关键字,
系统相机无非都是这样命名的以下是代码:
try {// 尽可能调用系統相机 // 对使用系统拍照的处理 // 一般手机系统中拍照软件的名字