概述
最近想做一个自动发送短信获取密码的app ,因为大学里的电信网 要24小时换一次密码,每次手动发短信去要密码很烦有没有~~
说明:Android 6.0 之前我们申请权限直接在配置文件中配置一下即可,但是6.0之后,
谷歌官方将权限分为普通权限和危险权限。对于危险权限来说,就需要进行动态设置了。
先说答案,大佬一看就懂的———— 用运行时权限的申请方法!!! (动态权限申请,叫惯了运行时权限。。见怪~)
我的理解:跟android的API 有关,对于SEND_SMS这类危险权限,要用**运行时权限**让用户授权,然后就能发送了,这可能是google为了让用户拥有更大权利,而不是开发人员。
大佬下面不用看了,不要来笑话我了,然后我开始讲故事了。。。
(就是那个好像叫 “闪讯” 的玩意儿。。。)你们可以体会了吧
然后疯狂找网上的代码,大致明白这个android 怎么调用系统的接口直接发送短信了,然后,我的问题就出现——
也就是这一行代码实现了发送短信的功能,他运行到真机上之后一直报错。。。。
smsManager.sendTextMessage(phoneNumber, null, text, sentPI, deliverPI);
大概报错是这个样子的:
说明没有获取权限啊,然后我就网上查资料,都说是没申明权限。。
,而我已经在manifest里面声明了权限:
<uses-permission android:name="android.permission.SEND_SMS"/>
这个android 6.0 声明这个权限就行了。
android8.0 的另一台手机还要一个权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
解决方法:
我想啊,网上都这么说,到我这儿没用了,可能是时代发展了的问题,旧时代的方法不适合新时代问题的解决啊。。
然后我就想起了我在学的 《android第一行代码》 里面申请权限的另一种方式——运行时申请权限 !!! 知识点啊。。
查了一下stackoverflow
他所说的api-23 之后的方法不就是 运行时申请权限吗,这个东西就是你装的时候不要权限,然后用到了再申请的那个,相信大家都碰到过。
也是差不多的意思
然后真的这么做了 在oncreate里面检查:
if(ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.SEND_SMS)!=
PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(MainActivity.this,new String[]{
Manifest.permission.SEND_SMS},1);
}
外面一个重载函数,得到用户是否同意了
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch(requestCode){
case 1:
if(grantResults.length>0&&grantResults[0]!=PackageManager.PERMISSION_GRANTED){
showToast("拒绝权限将无法使用程序");
finish();
}
break;
default:
break;
}
}
再运行:
然后因为还在测试看看行不行,这里给 10086 发了个 “查询余额” (不要钱的查询话费用的)
然后他就会自己发送:
给你们看我少的可怜的话费好了,然后代码还在写的 ,我的想法是让他 自己 24小时之后发 mm 到那个号码获取到密码,然后在显示在主界面上, 代码我就不放出来了,做好 一定放上来, 持续更新中。。。功成之日即是装X之时
app是早就做好了,然后陆陆续续有一些事情,之前答应更新的,这个周五的夜晚来还债啊。。
由于这个博客是解决标题上的问题,我打算新开一篇写下我做这个App的整个流程
下一篇:Android App 可以定时启动! 并且完成短信自动发送获取内容功能 (以获取闪讯密码为例 大学宿舍宽带)
最后
以上就是喜悦热狗为你收集整理的android 发送短信sendTextMessage()真机运行报错,退出,在已申请SEND_SMS权限的情况下Android send SMS not working uid 。。。的全部内容,希望文章能够帮你解决android 发送短信sendTextMessage()真机运行报错,退出,在已申请SEND_SMS权限的情况下Android send SMS not working uid 。。。所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复