我是靠谱客的博主 喜悦热狗,最近开发中收集的这篇文章主要介绍android 发送短信sendTextMessage()真机运行报错,退出,在已申请SEND_SMS权限的情况下Android send SMS not working uid 。。。,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

 

最近想做一个自动发送短信获取密码的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 。。。所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部