我一直试图让这个程序工作,但到目前为止没有运气.我无法找到我做错的地方.我不确定代码或调试是否有问题.
我正在尝试收到新短信到达时的通知.
这是我的计划:
package Technicaljar.SMSBroadcastReceiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;
public class SMSBroadcastReceiver extends BroadcastReceiver {
private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
private static final String TAG = "SMSBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "Intent recieved: " + intent.getAction());
if (intent.getAction() == SMS_RECEIVED) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[])bundle.get("pdus");
final SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i …Run Code Online (Sandbox Code Playgroud) 我看到了很多好的旧有用的方法,甚至整个类都被"弃用和过时".
但是用于调用这些方法的代码仍然有效.那么,作为Android应用程序开发人员,这对我意味着什么呢?
当没有提供替代方案时,这尤其令人困惑,例如WebView.PictureListener.html#onNewPicture.
我想创建一个应用程序,当SMS到达并处理该SMS时收到通知,但是读取createFromPdu函数的引用,它声明:
这个方法很快就会被弃用,所有通过处理SMS_RECEIVED_ACTION广播意图来处理传入SMS消息的应用程序现在必须将新格式String extra从intent传递给新方法createFromPdu(byte [],String),这需要额外的格式参数.这是为了在需要同时支持3GPP和3GPP2格式的设备上正确解码PDU所需的,例如双模GSM/CDMA和CDMA/LTE电话.
但是createFromPdu(byte[], String)文档和SDK都缺少该功能.
我该怎么办?我需要支持这些双卡双待手机.
我正在编写一个通过短信与其他设备通信的应用程序。
我能够为收到的短信实现一个监听器。问题是它正在收听所有收到的消息。我只想收听从特定号码收到的短信。
这是我的onReceive方法。
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Bundle bundle = intent.getExtras();
Object messages[] = (Object[]) bundle.get("pdus");
SmsMessage smsMessage[] = new SmsMessage[messages.length];
for (int n = 0; n < messages.length; n++) {
smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
}
// show first message
Toast toast = Toast.makeText(context,
"Received SMS: " + smsMessage[0].getMessageBody(),
Toast.LENGTH_LONG);
toast.show();
}
Run Code Online (Sandbox Code Playgroud)