广播读取短信

来源:互联网 发布:软件需求分析方法 编辑:程序博客网 时间:2024/06/06 00:38

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);}
@Overridepublic 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>

原创粉丝点击