android - Broadcast receiver in a Fragment -


i have broadcast receiver in fragment, track newly received sms.

private broadcastreceiver smsbroadcastreceiver; intentfilter filter = new intentfilter("android.provider.telephony.sms_received");  @override public void onactivitycreated(@nullable bundle savedinstancestate) {     super.onactivitycreated(savedinstancestate);      smsbroadcastreceiver = new broadcastreceiver() {         @override         public void onreceive(context context, intent intent) {             log.e("smsbroadcastreceiver", "onreceive");         }     }; }  @override public void onstart() { super.onstart();     localbroadcastmanager.getinstance(getactivity()).registerreceiver(smsbroadcastreceiver, filter); }  @override public void onstop() {     super.onstop();     localbroadcastmanager.getinstance(getactivity()).unregisterreceiver(smsbroadcastreceiver); } 

and permissions in manifest:

<uses-permission android:name="android.permission.receive_sms" /> <uses-permission android:name="android.permission.read_sms" /> 

the problem never log log.e("smsbroadcastreceiver", "onreceive"); sms while receiver still registered.

however if write receiver separate class , put in manifest, it's onreceive() called.

did miss something?

did miss something?

ya missing 1 point object life span. when register broadcast receiver in fragment receiver object alive till fragment exist. when fragment destroyed receiver unregistered. when ever fragment alive broadcast otherwise won't work. receive broadcast when app not in foreground have register broadcast in manifest file.

update

try this

intentfilter filter = new intentfilter("android.provider.telephony.sms_received"); private broadcastreceiver smsbroadcastreceiver=new broadcastreceiver() {         @override         public void onreceive(context context, intent intent) {             log.e("smsbroadcastreceiver", "onreceive");         }     }; 

and register receiver like

getactivity().registerreceiver(smsbroadcastreceiver, filter); 

and unregister like

getactivity().unregisterreceiver(smsbroadcastreceiver); 

Comments

Popular posts from this blog

powershell Start-Process exit code -1073741502 when used with Credential from a windows service environment -

twig - Using Twigbridge in a Laravel 5.1 Package -

c# - LINQ join Entities from HashSet's, Join vs Dictionary vs HashSet performance -