android.telephony.SmsMessage
A Short Message Service message.
Broadcast.class:
import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsMessage; import android.util.Log; import android.widget.Toast; public class Broadcast extends BroadcastReceiver { public static final String ACTION="android.provider.Telephony.SMS_RECEIVED"; @Override public void onReceive(Context context, Intent intent){ Toast.makeText(context, "收到短信", Toast.LENGTH_SHORT).show(); if(ACTION.equals(intent.getAction())){ SmsMessage smsMessage=null; String body=null; Bundle bundle=intent.getExtras(); if(null!=bundle){ Object[] pdus=(Object[])bundle.get("pdus"); if(pdus==null){ return; } for(Object obj:pdus){ smsMessage=SmsMessage.createFromPdu((byte[])obj); body=smsMessage.getDisplayMessageBody(); Toast.makeText(context,"这是广播读取短信内容:"+body,Toast.LENGTH_SHORT).show(); } String str[]=body.split(","); Toast.makeText(context,String.valueOf(str.length),Toast.LENGTH_SHORT).show(); Log.i("Debug",str[0]+" "+str[1]); /** if(str.length==2){ MainActivity.latitude=Double.valueOf(str[0]); MainActivity.longitude=Double.valueOf(str[1]); } */ Log.i("Debug",body); } } } }
在MainActivity.class中要动态申请权限:
List<String> permissionList=new ArrayList<>(); if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_SMS)!=PackageManager.PERMISSION_GRANTED){ permissionList.add( Manifest.permission.READ_SMS); } if(ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.SEND_SMS)!=PackageManager.PERMISSION_GRANTED){ permissionList.add( Manifest.permission.SEND_SMS); } if(!permissionList.isEmpty()){ String[] permissions=permissionList.toArray(new String[permissionList.size()]); ActivityCompat.requestPermissions(MainActivity.this,permissions,1); }
@Override public void onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResults){ switch(requestCode){ case 1: if(grantResults.length>0){ for(int result:grantResults){ if(result!=PackageManager.PERMISSION_GRANTED){ Toast.makeText(MainActivity.this,"您必须同意权限才能使用该功能!",Toast.LENGTH_SHORT).show(); finish(); return; } } }else{ Toast.makeText(MainActivity.this,"出现未知错误!",Toast.LENGTH_SHORT).show(); finish(); } break; } }
AndroidManifest.xml:
<uses-permission android:name="android.permission.RECEIVE_SMS"/> <uses-permission android:name="android.permission.READ_SMS" /> <uses-permission android:name="android.permission.SEND_SMS"/>
<!--短信广播监听器--> <receiver android:name=".Broadcast" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> </receiver>