broadcastReceiver内部的Android Java回调空
我试图在Android收到短信时获得通知,因此我为此编写了一个新类,如下所示:
public class MyBroadcastReceiver extends BroadcastReceiver {
public MyBroadcastCallback callback;
public MyBroadcastReceiver() {}
public MyBroadcastReceiver(MyBroadcastCallback callback) {
this.callback=callback;
Log.d("myTag", "MyBroadcastReceiver CONSTRUCTOR.... "+this.callback);
this.callback.OnReceiveSMS("phone TEST","message TEST");
}
@Override
public void onReceive(Context context, Intent intent) {
Bundle intentExtras = intent.getExtras();
if (intentExtras != null) {
Object[] sms = (Object[]) intentExtras.get("pdus");
for (int i = 0; i < sms.length; ++i) {
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) sms[i]);
String phone = smsMessage.getOriginatingAddress();
String message = smsMessage.getMessageBody().toString();
this.callback.OnReceiveSMS(phone,message);
}
}
}
public interface MyBroadcastCallback {
void OnReceiveSMS(String phone,String message);
}
}
然后,在我的主要活动中,我将类实例化如下:
public class MainActivity extends AppCompatActivity implements MyBroadcastReceiver.MyBroadcastCallback {
MyBroadcastReceiver broadcastReceiver=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
....
super.onCreate(savedInstanceState);
broadcastReceiver=new MyBroadcastReceiver(this);
....
}
@Override
public void OnReceiveSMS(String phone, String message) {
Log.d("myTag", "NEW SMS MESSAGE PHONE="+phone + " message="+message);
}
}
Android清单如下所示:
<receiver 安卓:name=".MyBroadcastReceiver">
<intent-filter>
<action 安卓:name="安卓.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
当接收到文本时,在MyBroadCastReceiver类中调用OnReceive
,这非常有效
但是当我试图在OnReceive()
内调用自己的回调函数来通知文本消息的主要活动时,如下所示:
this.callback.OnReceiveSMS(phone, message);
它崩溃,例外情况是this.callback
是null
我知道一开始不是null
,因为在构造函数中我传入了实现该接口的主活动
为了进行调试,我还在构造函数中打印了this.callback
,甚至在构造函数中调用了该函数,以确保它不是null
,所有这些都是有效的,但是当一个文本出现并且安卓操作系统调用OnReceive
时,它会变成null
有人知道为什么会这样吗?如何修复
共 (0) 个答案