即使未绑定,也会调用短信的广播接收器
Broadcast receiver for sms is invoked even it is unbound
我正在创建一个应用程序,我在其中使用广播接收器来获取即将到来的内容 message.I 我正在使用一个接口来实现广播接收器绑定并且 unbinding.This 已经在我的应用程序中实现另一个 app.There 它工作正常,但在当前应用程序中,如果 activity 停止或销毁,应用程序会崩溃,这会产生以下错误
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
这是我的广播接收器class代码:
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;
}
}
我在 activity 的 onresume()
中调用这些方法
@Override
protected void onResume() {
super.onResume();
SmsReceiver.bindListner(new SmsListerner() {
@Override
public void messageReceived(String messageText) {
String msg=messageText;
if (msg.contains("data")){
//string operations
}
}
});
}
并在 onDestroy
@Override
protected void onStop() {
super.onStop();
SmsReceiver.unBindListener();
}
收到消息,一切正常,但当应用程序在后台运行时,它crashes.Please帮助我解决这个问题。在此先感谢
当然可以,当你停止 activity 时,smsListener
会变成 null
,因为如果你不想在 activity 时发生任何事情,它就会崩溃已停止添加此
if (messagBody.contains("Password")&&smsListener!=null){
smsListener.messageReceived(messagBody);
}
我正在创建一个应用程序,我在其中使用广播接收器来获取即将到来的内容 message.I 我正在使用一个接口来实现广播接收器绑定并且 unbinding.This 已经在我的应用程序中实现另一个 app.There 它工作正常,但在当前应用程序中,如果 activity 停止或销毁,应用程序会崩溃,这会产生以下错误
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
这是我的广播接收器class代码:
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;
}
}
我在 activity 的 onresume()
中调用这些方法 @Override
protected void onResume() {
super.onResume();
SmsReceiver.bindListner(new SmsListerner() {
@Override
public void messageReceived(String messageText) {
String msg=messageText;
if (msg.contains("data")){
//string operations
}
}
});
}
并在 onDestroy
@Override
protected void onStop() {
super.onStop();
SmsReceiver.unBindListener();
}
收到消息,一切正常,但当应用程序在后台运行时,它crashes.Please帮助我解决这个问题。在此先感谢
当然可以,当你停止 activity 时,smsListener
会变成 null
,因为如果你不想在 activity 时发生任何事情,它就会崩溃已停止添加此
if (messagBody.contains("Password")&&smsListener!=null){
smsListener.messageReceived(messagBody);
}