باسلام و خسته نباشید
من میخواستم وقتی یه اسمس میاد ، باتوجه به متن اسمس یه متد خاصی اجرا بشه!
از interface استفاده میکنم همیشه و جواب میده!
ولی اینبار اصلا به متدی که نوشتم نمیره و میگه smsListener نال هست!
:BroadcastReciver.java
public class IncomingSms extends BroadcastReceiver {
String smsBody;
private SmsListener smsListener;
public interface SmsListener {
void PassActivate();
};
public void setSmsListener(SmsListener listener) {
smsListener = listener;
}
public static final String SMS_BUNDLE = "pdus";
@Override
public void onReceive(Context context, Intent intent) {
String address = "";
Bundle intentExtras = intent.getExtras();
if (intentExtras != null) {
Object[] sms = (Object[]) intentExtras.get(SMS_BUNDLE);
String smsMessageStr = "";
for (int i = 0; i < sms.length; ++i) {
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) sms[i]);
smsBody = smsMessage.getMessageBody().toString();
address = smsMessage.getOriginatingAddress();
}
String strOrig = smsBody;
try {
if (strOrig.contains("_Activated_")) {
if(smsListener!=null){
smsListener.PassActivate();
}
} else {
Toast.makeText(context, "Ops", Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
Toast.makeText(context, "Ops", Toast.LENGTH_LONG).show();
}
}
}
:Activity
import arfaie.navid.mei.IncomingSms.SmsListener;
public class Activate extends Activity {
private IncomingSms incomingSms;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_activate);
incomingSms = new IncomingSms();
incomingSms.setSmsListener(smsListener);
}
SmsListener smsListener = new SmsListener() {
@Override
public void PassActivate() {
Toast.makeText(getBaseContext(), "It Works", Toast.LENGTH_SHORT).show();
}
};
ممنون میشم اگه راهنماییم کنید :)