PHP收发短信

本人项目亲自测试使用,不过收短信,不是即时的,需要不断去读取,PHP也就只能做到这步了。 下面的手机是天翼定制机,相对麻烦些,如果是HTC,联想等机型,回简单许多。过程中使用了同事的HTC,就非常容易。

发短信

1:首先需要是root帐号登录 如果使用的不是root 需要执行命令的时候都全部提权,是全部。

2:插入手机,开启usb调试,USB设置:选择 天翼宽带连接 (其他手机具体查情况)

3:lsusb 识别出是id 109b 这个为海信 具体可以参阅http://developer.android.com/tools/device.html

4:下载最新的adt,测试的sdk为adt-bundle-linux-x86-20130729.zip,解压出sdk 经测试,只要platform-tools也是可以的,但只有运行sdk中的platform-tools才会生成.android隐藏文件

5:运行 adb ,或者重启adb ,查看root根目录是否存在.android隐藏文件夹 (大公司手机不需要这步) adb kill-server adb start-server adb devices

6:如果存在创建adb_usb.ini,里面追加 0x109b 一行即可。(大公司手机不需要这步)

7:创建 /etc/udev/rules.d/51-android.rules 添加 SUBSYSTEM=="usb", ATTR{idVendor}=="109b", MODE="0666", GROUP="plugdev" 修改权限 chmod a+r /etc/udev/rules.d/51-android.rules 这里的写法和sdk中的adb版本有关系。稍微老点的估计需要SYSFS(idVendor) == "109b"

8:需要卸载天翼手机的一个驱动 eSurfing mass storage USB Device (不是天翼手机不需要这步) 桌面会自动生成一个驱动图标eSurfingClient,点击卸载即可 或者 eject /dev/sr1 这是针对装有一部光驱的电脑,如果你电脑上本来没有光驱,那这里E920的光驱应该是sr0,依次类推。不清除的可以44 eject /dev/sr0,一定要重启adb. 注意需要连续执行2次,第一次删除后,回重新在驱动起,第二次删除后就不会了,具体看dev/sr1或者src2是否还存在 9:进入adb目录
adb kill-server adb start-server adb devices 应该就可以看到设备,说明链接成功。

Email:csq-3@163.com

链接成功后直接输入下面命令即可

通过adb 命令拨打电话 adb shell service call phone 2 s16 "10086"(呼 叫的号码)
通过adb 命令发送短信,需要两步 adb shell am start -a android.intent.action.SENDTO -d sms:10086(发送目的号码) --es sms_body "hello"(短信内容) --ez exit_on_sent true
adb shell input keyevent 22 //失去焦点 adb shell input keyevent 66 // 模拟发送按键
./adb shell am start -a android.intent.action.SENDTO -d sms:13880253762 --es sms_body "hello" --ez exit_on_sent true

群发的话 shell加 sms:13880253762,15928928421即可 逗号,java里好像是分号。

<!-- lang: php -->
 <?php
    $info = json_decode($_POST['info'],true);
    $last_line = system('/home/cwh/platform-tools/adb shell am start -a android.intent.action.SENDTO -d sms:'.$info['phoneNum'].' --es sms_body "'.$info['phoneBody'].'" --ez exit_on_sent true;', $retval);
    sleep(2);
    $last_line1 = system('/home/cwh/platform-tools/adb shell \'input keyevent 22;input keyevent 66;\'', $retval);
    sleep(3);
    $last_line3 = system('/home/cwh/platform-tools/adb shell  \'input keyevent 4;input keyevent 4;input keyevent 4;\'', $retval);
    echo "发送成功!";
  ?>

收短信 1:海信在adb 收发短信确保成功。 2:但adb能执行,PHP调用的话还回遇到很多问题。 3:转换时间需要把后面3个0去掉在转换。

Email:csq-3@163.com

1:执行语句语法,执行权限,

在./adb shell su -c 'cd /data/data/com.android.providers.telephony/databases/;ls' 是可以执行的正确的。 但./adb shell su -c 'sqlite3 /data/data/com.android.providers.telephony/databases/mmssms.db "select * from sms;"' 是不能执行的, 还算权限的问题,不是进入目录不是没有权限,而是执行sqlite的时候,就不是root了。

所以确保默认adb进入就是root相当的关键 网上4了很多都不行,也就是需要adb进入就是root权限 最后下个adb守护进程 360助手直接可以下载 开启权限即可。

app为超级adbd。 在此输入图片描述

然后./adb shell 'sqlite3 /data/data/com.android.providers.telephony/databases/mmssms.db "select * from sms;"' 即可获取相关短信内容。

<!-- lang: php -->
<?php
  ob_start();
    ob_implicit_flush(0);
    $last_line = system('/home/cwh/platform-tools/adb shell \'sqlite3 -html /data/data/com.android.providers.telephony/databases/mmssms.db "select * from sms order by _id desc;"\'', $retval);
    $contents = ob_get_contents();
    ob_end_clean();
    if ($contents == '') {
        echo "手机里没有短信";
    } else {
        echo $contents;
    }
    $this->output();
   ?>

转载于:https://my.oschina.net/copperpeas/blog/161943

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值