android - Why didn`t it work the imported function in SMSReceived from MainActivity? -
can tell me please why didn`t work imported function in smsreceived mainactivity.
package com.example.smarthome; import android.content.broadcastreceiver; import android.content.context; import android.content.intent; import android.os.bundle; import android.telephony.smsmessage; import android.widget.toast; public class smsreceiver extends broadcastreceiver { mainactivity mainactivityobject=new mainactivity(); @override public void onreceive(context context, intent intent) { bundle bundle = intent.getextras(); if (bundle != null){ toast.maketext(context, "newsms", toast.length_long).show(); mainactivityobject.afisarestareled(); } } } the function mainactivity is:
protected void afisarestareled() { textview view = new textview(this); uri urismsuri = uri.parse("content://sms/inbox"); cursor cursor = getcontentresolver().query(urismsuri, null, null, null, null); while (cursor.movetonext()){ if(cursor.getstring(2).equals(number) && cursor.getstring(8).equals("0")){ if(cursor.getstring(13).endswith("aprins") || cursor.getstring(13).endswith("stins")){ textview textstareled = (textview) findviewbyid(r.id.textstareled); textstareled.settext(cursor.getstring(13)); break; } } } markmessageread(); } p.s. want make function wich should modify textview when receive sms.
you cannot create instance of activity yourself, doing in onreceive():
mainactivity mainactivityobject=new mainactivity(); only android framework can create instance of activity correctly, needs have context set , android framework this.
in activity can create instance of broadcastreceiver (you can use inner class of activity) , register using registerreceiver(). then, in onreceive() have access methods of activity , can call 1 update ui.
Comments
Post a Comment