在天好圈项目开发中,调用一登人脸识别时遇到一个问题,不可以调用手机的摄像头。
经过查找得知是Android 6.0 之后权限机制发生了变化。
Android 6.0之前,权限在应用安装过程中只询问一次,以列表的形式展现给用户,然而大多数用户并不会注意到这些,直接就下一步了,应用安装成功后就会被赋予清单文件中的所有权限,应用就可以在用户不知情的情况下进行非法操作(比如偷偷的上传用户数据)。在以前的手机系统如塞班,是会后台帮你开通一些付费的服务SP(Service Provider),下文会有所介绍。
Android 6.0版本中运行时权限的出现解决了这一问题,一些高危权限会在应用的运行过程中动态申请,这样用户就可以选择是否允许,比如调用摄像头,写入SD卡等权限。
这就是 Android 6.0 的运行时权限检查机制。下面是Google官方对此的解释,只截取介绍部分
Beginning in Android 6.0 (API level 23), users grantpermissions to apps while the app is running, not when they install the app.This approach streamlines the app install process, since the user does not needto grant permissions when they install or update the app. It also gives theuser more control over the app's functionality; for example, a user couldchoose to give a camera app access to the camera but not to the devicelocation. The user can revoke the permissions at any time, by going to theapp's Settings screen.
找到了问题的原因,改如何解决
解决方法有两种
第一种,逃避的方法,将targetSdkVersion 改为23以下,即小于6.0版本。
第二种,就是在需要调用权限的地方
1、先检查该权限是否申请同意了
2、若没有就进行申请
3、在申请回调成功的地方执行你想干的事。
部分代码如下:
ContextCompat.checkSelfPermission(mContext,Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED
ActivityCompat.requestPermissions(mContext,new String[]{Manifest.permission.CALL_PHONE},REQUEST_CODE_ASK_CALL_PHONE);
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ASK_CALL_PHONE:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
callDirectly(mobile);
} else { }
}
番外篇:介绍SP
SP指移动互联网服务内容应用服务的直接提供者,负责根据用户的要求开发和提供适合手机用户使用的服务。
详细的说:SP(Service Provider)是指移动互联网服务内容应用服务的直接提供者,负责根据用户的要求开发和提供适合手机用户使用的服务。SP通过运营商提供的增值接口为用户提供服务,然后由运营商在用户的手机费和宽带费中扣除相关服务费,最后运营商和SP再按照比例分成。[9]
手机终端上的 SP 服务包括纯文本短信( SMS )它是最简单的 SP 业务。还包括用户可以获得各种个性化多媒体内容的彩信。除此以处游戏、彩铃、交友社区、广告等等都是增值业务。
从企业业务开展的角度来看 SP可以分成三大类:
★门户型SP就是由门户网站提供的短信服务。主要有搜狐、新浪、网易、中华网、Tom等几家。其短信服务的内容主要有铃声、图片、文字传情、新闻、游戏等,这些需要不断补充素材的服务是这些门户型 SP的专长
★专业型SP以短信作为主业的公司。从提供的服务品种来看,专业型 SP和门户型SP几乎完全重合。但从具体的业务来看,专业型 SP的优势在于需要不断创新的技术性、创意性服务
★专项型SP代表是腾讯公司。腾讯和其他的短信服务商不同,没有常见的图片、铃声、游戏等业务,只专注于自己具有垄断优势的 QQ衍生短信服务。
sp申请分为地网及全网
,地网sp注册资金1百万,全网注册资金1千万。
sp运营许可证申请材料:
一)经营许可证复印件
二)在当地开展业务的方案
三)在当地开展业务的书面报告。内容包括:公司在当地设立的分公司或子公司等相应机构的名称、通信地址、邮政编码、联系人、联系电话、电子信箱地址等
四)公司在当地设有分公司或子公司等相应机构的公司批准文件、分公司或子公司的营业执照(复印件)、章程、股权结构等有关材料。
获准经营基础电信业务或在两个以上省、自治区、直辖市范围内经营增值电信业务的公司,应当凭经营许可证到相关省、自治区、直辖市通信管理局(ETF)办理备案手续,并提交相关材料。