Android 当移动屏幕锁定时,广播接收器不会触发
当我安装应用程序时,一切正常。我可以在每次发送邮件时打印邮件正文,直到锁定手机屏幕。之后,应用程序停止打印传入消息。我尝试了很多方法来克服这个问题,但没有成功。请帮帮我Android 当移动屏幕锁定时,广播接收器不会触发,android,broadcastreceiver,Android,Broadcastreceiver,当我安装应用程序时,一切正常。我可以在每次发送邮件时打印邮件正文,直到锁定手机屏幕。之后,应用程序停止打印传入消息。我尝试了很多方法来克服这个问题,但没有成功。请帮帮我 public class SmsReceiveActivity extends Activity{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
public class SmsReceiveActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sms);
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(SMS_RECEIVED)) {
Object[] pdus = (Object[]) bundle.get("pdus");
final android.telephony.SmsMessage[] messages = new android.telephony.SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
messages[i] = android.telephony.SmsMessage.createFromPdu((byte[]) pdus[i]);
incomingMsgString += messages[i].getMessageBody().toString();
}
// Print Incoming message Body
}
}
}
getApplication().registerReceiver(receiver, new IntentFilter(SMS_RECEIVED));
}
}
公共类SmsReceiveActivity扩展活动{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sms);
接收器=新的广播接收器(){
@凌驾
公共void onReceive(上下文、意图){
if(intent.getAction().equals(SMS_已接收)){
Object[]pdus=(Object[])bundle.get(“pdus”);
final android.telephony.SmsMessage[]messages=新的android.telephony.SmsMessage[pdus.length];
对于(int i=0;i
根据广播接收器
,当您使用注册接收器()
注册接收器时,“暂停时您将不会收到意图”。如果您想要一个独立于您的活动的接收者,您应该将其实现为一个命名类,并在清单中发布它。例如,使用匿名BroadcastReceiver
创建一个命名类
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(SMS_RECEIVED)) {
Object[] pdus = (Object[]) bundle.get("pdus");
final android.telephony.SmsMessage[] messages = new android.telephony.SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
messages[i] = android.telephony.SmsMessage.createFromPdu((byte[]) pdus[i]);
incomingMsgString += messages[i].getMessageBody().toString();
}
// Print Incoming message Body
}
}
}
然后,当收到SMS消息时,将调用您的
onReceive
方法。在那里,您可以打包所需的信息,并启动活动
或服务
的意图,以便进一步处理。将广播创建为静态内部类,并在清单中注册。试试这个链接 我们为什么要这样做-SmsMessage[]消息。为什么是阵列?是否适用于多个SMS?
<receiver android:name=".MyReceiver" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/ >
</intent-filter>
</receiver>