android - Sending Intent from BroadcastReceiver class to currently running activity -


i have class extends broadcastreceiver. on receiving sms, pass information main activity class display text in box (append, if text present).

public class smsreceiver extends broadcastreceiver { @override public void onreceive(context context, intent intent)     {         intent = new intent(context, mainactivity.class);             i.putextra("updatedstring","hello");             context.startactivity(i);     } } 

mainactivity.java

public class mainactivity extends activity{    private textview results;   @override     public void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);          bundle extras = getintent().getextras();         if(extras!=null){             results = (textview) findviewbyid(r.id.results);             results.setvisibility(view.visible);             results.append(extras.getstring("updatedstring"));         }  } 

i have 1 activity class (mainactivity.java). when exception unable pause activity.

you have 3 ways:
1) can define broadcast inside mainactivity this:
in oncreate()

registerreceiver(smsreceiver, new intentfilter(sms_recieved));   

and define smsreciver in mainactivity

private broadcastreceiver smsreceiver = new broadcastreceiver() {     @override     public void onreceive(context context, intent intent) {         //you can update textbox here         handler.postdelayed(sendupdatestoui, 10);       } };   

define runnable update ui

private runnable sendupdatestoui = new runnable() {     public void run() {         update();     } }; 

and update method

private void update(string text) {     textview.settext(textview.gettext().tostring() + text); }  

2) register receiver between activity , broadcastreceiver

3) start activity new intent update current open activity

intent intent = new intent(context, mainactivity.class); intent.putextra("key", "text"); intent.setflags(intent.flag_activity_new_task); context.startactivity(intent);   

update :
explain method 2
mainactivity.class

in onresume()

registerreceiver(broadcastreceiver, new intentfilter(smsreceiver.broadcast_action));   

in ondestroy()

unregisterreceiver(broadcastreceiver); 

local broadcast (broadcastreceiver, in mainactivity.class)

private broadcastreceiver broadcastreceiver = new broadcastreceiver() {     @override     public void onreceive(context context, intent intent) {         updateui(intent);     } }; private void updateui(intent intent) {     string text = intent.getstringextra("key");     textview.settext(textview.gettext().tostring() + text); } 

smsreceiver.class
global attribute

public static final string broadcast_action = "your.package.name.displayevent"; private final handler handler = new handler(); intent intent; context context; 

in onreceive()

handler.removecallbacks(sendupdatestoui); handler.postdelayed(sendupdatestoui, 10);  this.context = context;//you can retrieve context onreceive argument  this.intent = new intent(broadcast_action); 

define 2 method

private runnable sendupdatestoui = new runnable() {     public void run() {         display();     } };  private void display() {     intent.putextra("key", text);     context.sendbroadcast(intent); } 

Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -