gpt4 book ai didi

android - 从广播接收器调用 Activity 方法

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:20:21 26 4
gpt4 key购买 nike

在主 Activity 中,加载了一个布局,其中包含一些输入字段和一个提交按钮。单击提交按钮时,onClick 处理程序方法将短信发送回同一手机号码:

SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(number, null, "hi", null, null);

定义了一个拦截消息的广播接收器:

public class SmsReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
Bundle pdusBundle = intent.getExtras();
Object[] pdus=(Object[])pdusBundle.get("pdus");
SmsMessage messages=SmsMessage.createFromPdu((byte[]) pdus[0]);
if(messages.getMessageBody().contains("hi")){
abortBroadcast();
}

}
}

现在,我想从广播接收器调用一个函数(带参数),它在我的主要 Activity 中。那可能吗?如果是,我应该在我的广播接收器中添加什么样的代码?

最佳答案

谢谢@Manishika。详细来说,使 Broadcastreceiver 动态化,而不是在 list 中定义它,就达到了目的。所以在我的广播接收器类中,我添加了代码:

MainActivity main = null;
void setMainActivityHandler(MainActivity main){
this.main=main;
}

在 BroadcastReceiver 类的 onReceive 函数的最后,我调用了主 Activity 的函数:

main.verifyPhoneNumber("hi");

在主要 Activity 中,我在发送短信之前动态定义和注册广播接收器:

SmsReceiver BR_smsreceiver = null;
BR_smsreceiver = new SmsReceiver();
BR_smsreceiver.setMainActivityHandler(this);
IntentFilter fltr_smsreceived = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
registerReceiver(BR_smsreceiver,fltr_smsreceived);

关于android - 从广播接收器调用 Activity 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18923207/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com