做了一个可以多选联系人的页面,选择之后,sendTextMessage发送多条短信,发送之前有检查发送短信的授权,没授权将请求授权,授权成功后才发送。结果发现Oppo A1601,判断时是已授权,直接走sendInviteSMS(); 调用sendTextMessage逐条发短信,但是每发一条短信都会弹一次授权提示。
经查,设置里面应用是已经被授权发送短信,是Oppo A1601自带的安全中心对发送短信权限进行了限制,使用时询问。改成允许是没问题的。
就好似,广州到北京,出发之前查询道路是否是好的(是否授权),坏的就修好再出发(请求授权),结果道路是好的情况下出发,半路有收费站(安全中心),不给钱就不让过(不授权就发送失败),并且每次经过都要收费(每条短信都弹授权提示)。
AppExecutors.get().execute(TaskType.BACKGROUND, new Callable<Boolean>() { @Override public Boolean call() throws Exception { return PackageManager.PERMISSION_GRANTED == ContextCompat.checkSelfPermission(getContext(), Manifest.permission.SEND_SMS); } }, new Consumer<Boolean>() { @Override public void accept(Boolean result) { if (result) { Log.d(TAG,"SEND_SMS granted"); sendInviteSMS(); } else { Log.d(TAG,"requestPermission SEND_SMS"); PermissionGen.needPermission(ChooseContactFragment.this, SEND_SMS_PERMISSION_REQUEST_CODE, Manifest.permission.SEND_SMS); } } });