接收广播处理短消息 Manifest.permission.RECEIVE_SMS
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
// if (checkSelfPermission(Manifest.permission.SEND_SMS) == PackageManager.PERMISSION_DENIED) {
// Log.d("permission", "permission denied to SEND_SMS - requesting it")
String[] permissions ={Manifest.permission.SEND_SMS,Manifest.permission.READ_SMS,Manifest.permission.RECEIVE_SMS};
requestPermissions(permissions, 1);
// }
}
//动态注册广播接收
Receiver_SMS sms=new Receiver_SMS();
IntentFilter filter=new IntentFilter();
filter.addAction("android.provider.Telephony.SMS_RECEIVED");
registerReceiver(sms,filter);
}
public class Receiver_SMS extends BroadcastReceiver {
private final String TAG=MyReceiver.class.getSimpleName();
@Override
public void onReceive(Context context, Intent intent) {
// TODO: This method is called when the BroadcastReceiver is receiving an Intent broadcast.
Toast.makeText(context, "Broad cast Received", Toast.LENGTH_SHORT).show();
Log.e(TAG,"RECEIVE_SMS Broad cast Received !");
Bundle bundle=intent.getExtras();
Object[] pdus=(Object[]) bundle.get("pdus");//提取短信消息
SmsMessage[] messages=new SmsMessage[pdus.length];
for(int i=0;i<messages.length;i++){
messages[i]=SmsMessage.createFromPdu((byte[]) pdus[i]);
}
String address=messages[0].getOriginatingAddress();//获取发送号码
String fullMessage="";
for(SmsMessage message: messages){
fullMessage+=message.getMessageBody();//获取短信内容
}
Toast.makeText(context, "接收到短消息:"+address+" 内容:"+fullMessage, Toast.LENGTH_SHORT).show();
Log.e(TAG,fullMessage);
}
}