Android sms广播接收器即使未绑定也会被调用
我正在创建一个应用程序,其中我正在使用广播接收器获取即将到来的消息的内容。我正在使用一个接口来实现广播接收器绑定和解除绑定。这已在我的另一个应用程序中实现。在那里,它可以正常工作,但在当前应用程序中,如果活动停止或销毁,则应用程序崩溃,这会导致以下错误Android sms广播接收器即使未绑定也会被调用,android,nullpointerexception,broadcastreceiver,sms,Android,Nullpointerexception,Broadcastreceiver,Sms,我正在创建一个应用程序,其中我正在使用广播接收器获取即将到来的消息的内容。我正在使用一个接口来实现广播接收器绑定和解除绑定。这已在我的另一个应用程序中实现。在那里,它可以正常工作,但在当前应用程序中,如果活动停止或销毁,则应用程序崩溃,这会导致以下错误 Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'void com.encureit.a24klen.interfaces.SmsList
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'void com.encureit.a24klen.interfaces.SmsListerner.messageReceived(java.lang.String)' on a null object reference
这是我的广播接收器类别代码:
public class SmsReceiver extends BroadcastReceiver {
private static SmsListerner smsListener;
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle=intent.getExtras();
Object []pdus= (Object[]) bundle.get("pdus");
for (int i=0;i<pdus.length;i++){
SmsMessage smsMessage=SmsMessage.createFromPdu((byte[]) pdus[i]);
String messagBody=smsMessage.getMessageBody();
if (messagBody.contains("Password")){
smsListener.messageReceived(messagBody);
}
}
}
public static void bindListner(SmsListerner listener){
smsListener=listener;
}
public static void unBindListener(){
smsListener=null;
}
}
在onDestroy
@Override
protected void onStop() {
super.onStop();
SmsReceiver.unBindListener();
}
消息传来,一切正常,但当应用程序在后台时,它会崩溃。请帮助我解决这个问题。首先感谢您当然,当您停止活动时,
smsListener
将变为null
,因为如果您不想在活动停止时发生任何事情,它将崩溃添加此项
if (messagBody.contains("Password")&&smsListener!=null){
smsListener.messageReceived(messagBody);
}
谢谢@Mohammad.。你的解决方案解决了问题issue@AkashK不客气
if (messagBody.contains("Password")&&smsListener!=null){
smsListener.messageReceived(messagBody);
}