Register BroadcastReceiver For Incoming SMS

后端 未结 4 1519
醉梦人生
醉梦人生 2021-01-02 07:34

How to Register BroadcastReceiver For blocking Incoming SMSs

    IntentFilter intentFilter = new IntentFilter(Intent.\"what should be here\");
     ctx.regi         


        
相关标签:
4条回答
  • 2021-01-02 07:55

    Register a receiver in your manifest with highest priority:

        <receiver android:name=".SmsReceiver"> 
            <intent-filter android:priority="9999"> 
                <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
            </intent-filter> 
        </receiver>        
    

    Create BroadcastReceiver class:

    public class SmsReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
        }
    }
    

    Implement onReceive method:

    Bundle bundle = intent.getExtras();
    if (bundle != null && bundle.containsKey("pdus")) {
        Object[] pdus = (Object[]) bundle.get("pdus");
        SmsMessage sms = SmsMessage.createFromPdu((byte[]) pdus[0]);
        String senderNumber = sms.getOriginatingAddress();
        if( senderIsInBlackList(senderNumber)) {
            abortBroadcast();
        }
    }                
    
    0 讨论(0)
  • 2021-01-02 08:12

    Try the following :

    intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
    

    Hope this helps.

    0 讨论(0)
  • 2021-01-02 08:14

    Declare the receiver in your AndroidManifest.xml:

     <receiver
            android:name="com.example.YourSmsReceiver"
            android:exported="true" >
            <intent-filter android:priority="1000" >
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
     </receiver>
    

    Hope this helps, Yaron

    0 讨论(0)
  • 2021-01-02 08:19

    You should check for the permission

    if (ContextCompat.checkSelfPermission(mActivity, Manifest.permission.RECEIVE_SMS) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(mActivity, new String[]{Manifest.permission.RECEIVE_SMS}, 0);
    } else {
            // register sms receiver
            IntentFilter filter = new IntentFilter(Telephony.Sms.Intents.SMS_RECEIVED_ACTION);
            registerReceiver(smsReceiver, filter);
    }
    
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    
        if (ContextCompat.checkSelfPermission(mActivity, Manifest.permission.RECEIVE_SMS) != PackageManager.PERMISSION_GRANTED) {
    
        } else {
            // register sms receiver
            IntentFilter filter = new IntentFilter(Telephony.Sms.Intents.SMS_RECEIVED_ACTION);
            registerReceiver(smsReceiver, filter);
    }
        }
    
    0 讨论(0)
提交回复
热议问题