1开启服务
2服务中注册广播
smsReceiver=new SmsReceiver();
IntentFilter intentFilter=new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
//在filter设置优先级
intentFilter.setPriority(Integer.MAX_VALUE);
registerReceiver(smsReceiver,intentFilter);
或者静态广播
<receiver
android:name="com.Broadcastreceivers.SmsReceiver"
android:enabled="true">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
这是系统广播。不给API提示。
3当有短信进来时:
public void onReceive(Context context, Intent intent) {
//获取系统发送的信息广播intent对象,并通过bundle将短信信息取出。
Bundle bundle= intent.getExtras();
Object[] datas = (Object[]) bundle.get("pdus");//信息在pdus字段里
for(Object data:datas){
//从pdu获取消息
//SmsMessage.读取信息
SmsMessage smsMessage=SmsMessage.createFromPdu((byte[]) data);
String body = smsMessage.getDisplayMessageBody();
String address = smsMessage.getDisplayOriginatingAddress();
Log.d("信息",body+":"+address);
}
}
4停服务,解注册广播
发送短信时:
SmsManager smsManager=SmsManager.getDefault();
smsManager.sendTextMessage(number,"",locationtext.toString(),null,null);
5权限:
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.READ_SMS" />