/SmsGatewayMonitor

SmsGatewayMonitor tool

Primary LanguageJava

【张均宁解析过的需求】:

名词:

短信网关号码: sp

心跳间隔(分钟): heart

发送短信回复间隔(分钟): recv

最大重发次数 : maxcount

功能:

1 监听sp的短信接收

2 给sp发信息

3 响铃,震动,通知栏显示内容 -- -- -- -- -- --

需求:

1 监听sp的短信,只要heart分钟内收到sp的短信,即视为:正常,否则 就发送内容为“0”的短信给sp,如recv分钟内有回复,则代表正常,不再继续发动信息,否则继续发送,最大重发次数:maxcount次。

2 如果达到最大maxcount次后,还没收到回复,做一下操作:
响铃(可以增加震动)
通知栏提示“短信网关通信中断”

3 可以对sp, heart, recv 进行设置.

4 用户正常退出app时,记录日志,发送接收信息也记录日志。

5

需要引用的第三方库:

DualSimInfo-master: 采集双卡信息


待优化: 最近一次发送短信的时间: 优化为: 使用短信发送广播发送状态的时间来设置。

和短信网关连接超时,报警后,还要继续报警吗? 如果之后有连接,则取消告警, 否则继续告警


涉及到的点: 1 系统启动白屏 2 最小化主页 3

软件万能定律: 有什么“解决不了的问题就加个中间层,如果还是解决不了就多加几层”

=====================================

//获取手机号码 TelephonyManager tm = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE); String deviceid = tm.getDeviceId();//获取智能设备唯一编号 String te1 = tm.getLine1Number();//获取本机号码 String imei = tm.getSimSerialNumber();//获得SIM卡的序号 String imsi = tm.getSubscriberId();//得到用户Id 添加权限:

<uses-permissionandroid:nameuses-permissionandroid:name="android.permission.READ_PHONE_STATE"/ 以上做法有可能获取sim卡号,但是现在最起码在电信手机卡上获取不到。

原因好像、似乎是: 手机号码不是所有的都能获取。只是有一部分可以拿到。这个是由于移动运营商没有把手机号码的数据写入到sim卡中.SIM卡只有唯一的编号,供网络与设备识别那就是IMSI号码,手机的信号也可以说是通过这个号码在网络中传递的,并不是手机号码。试想,你的SIM卡丢失后,补办一张新的会换号码吗?是不会的.就是因为在你的手机号码对应的IMSI号 在移动运营商中被修改成新SIM卡的IMSI号码。 那么我们怎么解决这个问题呢?

不好实现?一个原因搞定你:项目需要!! 查了下手机的基本信息那一栏里,也没有找到手机号,看来手机中似乎没有存储这手机号。那么我就只有使用变通的手法来获取手机号了。 就是给10001发送一个短信,找了一下,发个501查询套餐情况就可以。10001会给你个反馈信息,其中包含手机号码 那么我们发送短信,然后监听得到此短信,然后分解字符串那么就可以得到手机号了。

=================================

sendTextMessage的信息不会显示在发件箱里

增加一个新页面,用来展示历史日志

空格 ( ) Tab ( ) 回车 ( ) 换行 ( )

在主页面的OnStart()方法里做日志的备份检查。

2018.3.16,zhangjunning来看效果,提出以下问题: 1 必须响铃, 2 必须用户确认,比如对话框 3 日志只需要存最后一条,或者最后N条,防止日志太多。 4 页面适配 5 页面初始化参数必须是规定的,不是测试的。

2018.3.16 zhangjunning要求日志只保留最后一条告警

注意事项: 1 不写非告警日志;2 不追加写日志, 3 注释掉备份日志的代码

打包流程: 1 修改Finals.IS_TEST = false;

历史告警日志展示方式更改: 打开新页面 ---> toast提示 ("最近一次告警的时间:" + 2018.3.12);