android.telephony.SmsMessage

A Short Message Service message.

Android开发之广播读取短信


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>

相关文章:

  • 2021-07-14
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-01-19
  • 2021-09-09
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案