package com.centaurwarchief.smslistener; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.IntentFilter; import android.os.Build; import android.provider.Telephony; import com.facebook.react.bridge.LifecycleEventListener; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; public class SmsListenerModule extends ReactContextBaseJavaModule implements LifecycleEventListener { private BroadcastReceiver mReceiver; private boolean isReceiverRegistered = false; public SmsListenerModule(ReactApplicationContext context) { super(context); mReceiver = new SmsReceiver(context); getReactApplicationContext().addLifecycleEventListener(this); registerReceiverIfNecessary(mReceiver); } private void registerReceiverIfNecessary(BroadcastReceiver receiver) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && getCurrentActivity() != null) { getCurrentActivity().registerReceiver( receiver, new IntentFilter(Telephony.Sms.Intents.SMS_RECEIVED_ACTION) ); isReceiverRegistered = true; return; } if (getCurrentActivity() != null) { getCurrentActivity().registerReceiver( receiver, new IntentFilter("android.provider.Telephony.SMS_RECEIVED") ); isReceiverRegistered = true; } } private void unregisterReceiver(BroadcastReceiver receiver) { if (isReceiverRegistered && getCurrentActivity() != null) { getCurrentActivity().unregisterReceiver(receiver); isReceiverRegistered = false; } } @Override public void onHostResume() { registerReceiverIfNecessary(mReceiver); } @Override public void onHostPause() { unregisterReceiver(mReceiver); } @Override public void onHostDestroy() { unregisterReceiver(mReceiver); } @Override public String getName() { return "SmsListenerPackage"; } }