communication between two device using sms

前端 未结 2 877
栀梦
栀梦 2020-12-22 12:18

I want my program to be able to receive sms from a special number(\"+9856874236\").

I want application to be recive SMS ,if the SMS is contain \"enable wifi\" ,then

2条回答
  •  一个人的身影
    2020-12-22 12:34

    To intercept the SMS as early as possible I use the following code:

    public class Communicator extends Service {
    
    private final String TAG = this.getClass().getSimpleName();
    
    private SMSReceiver mSMSreceiver;
    private IntentFilter mIntentFilter;
    
    @Override
    public void onCreate()
    {
        super.onCreate();
    
    
        Log.i(TAG, "Communicator started");
        //SMS event receiver
        mSMSreceiver = new SMSReceiver();
        mIntentFilter = new IntentFilter();
        mIntentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
        mIntentFilter.setPriority(2147483647);
        registerReceiver(mSMSreceiver, mIntentFilter);
    
        Intent intent = new Intent("android.provider.Telephony.SMS_RECEIVED");
        List infos = getPackageManager().queryBroadcastReceivers(intent, 0);
        for (ResolveInfo info : infos) {
            Log.i(TAG, "Receiver name:" + info.activityInfo.name + "; priority=" + info.priority);
        }
    }
    
    @Override
    public void onDestroy()
    {
        super.onDestroy();
    
        // Unregister the SMS receiver
        unregisterReceiver(mSMSreceiver);
    }
    
    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }
    
    private class SMSReceiver extends BroadcastReceiver
    {
        private final String TAG = this.getClass().getSimpleName();
    
        @Override
        public void onReceive(Context context, Intent intent)
        {
            Bundle extras = intent.getExtras();
    
    
            String strMessage = "";
    
            if ( extras != null )
            {
                Object[] smsextras = (Object[]) extras.get( "pdus" );
    
                for ( int i = 0; i < smsextras.length; i++ )
                {
                    SmsMessage smsmsg = SmsMessage.createFromPdu((byte[])smsextras[i]);
    
                    String strMsgBody = smsmsg.getMessageBody().toString();
                    String strMsgSrc = smsmsg.getOriginatingAddress();
    
                    strMessage += "SMS from " + strMsgSrc + " : " + strMsgBody;                    
    
                    Log.i(TAG, strMessage);
    
                    if (strMsgBody.contains("SomeText")) {
    
    
                                // perform code
    
                        this.abortBroadcast();
    
                    }
                }
    
    
    
            }
    
        }
    
    }
    }
    

    Remember to register the service in manifest:

    
    

    Now in onCreate and onDestroy start and stop the service:

    startService(new Intent(this, Communicator.class));
    stopService(new Intent(this, Communicator.class));
    

提交回复
热议问题