ANDROID 短信的获取 想要请问一下大家,如何在android的ril层实现短信pdu包的获取呢?是否需要在哪里注册一个回调函数进行获取呢?如果是需要注册回调,请问具体在哪里进行注册呢?非常感谢大家。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 android太新了顶 不知道你要实现什么功能,Android的短信不是直接可以用么?收到短信会在Log里面显示吧!你看看在哪里打印出来的 为什么非要在底层处理,BroadcastReceiver可以监听是否有新短信 以下是我自学时写的demo,希望对你有用/* *此类用于接收系统短信广播,并对短信进行解析 */public class SMSReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { System.out.println("---------------------receiver a message-------------------"); //接收intent对象中的数据 Bundle bundle = intent.getExtras(); //在Bundle对象中有个属性名为 pdus 值是object数组 Object[] myObjPdus = (Object[])bundle.get("pdus"); //创建一个SmsMessage 类型的数组 SmsMessage[] smsMessage = new SmsMessage[myObjPdus.length]; System.out.println(smsMessage.length); for (int i = 0; i < myObjPdus.length; i++) { //使用Object数组中的对象创SmsMessaged对象 smsMessage[i] = SmsMessage.createFromPdu((byte[])myObjPdus[i]); //调用SmsMessage 对象的getDisplayMessageBody()方法即可显示消息的内容 System.out.println(smsMessage[i].getDisplayMessageBody()); System.out.println("getMessageBody: "+smsMessage[i].getMessageBody()); } }}这是短信监听的权限申请,写配置文件中 <!-- 短信监听权限申请 --> <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>测试类,public class TestActivity extends Activity { //sms监听的action private static final String SMS_ACTION = "android.provider.Telephony.SMS_RECEIVED"; Button registerButton = null; Button unregisterButton = null; SMSReceiver smsReceiver = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); registerButton = (Button)findViewById(R.id.register); unregisterButton = (Button)findViewById(R.id.unregister); registerButton.setOnClickListener(new RegisterListener()); unregisterButton.setOnClickListener(new UnRegisterListener()); } class RegisterListener implements OnClickListener{ @Override public void onClick(View v) { //生成一个BroadcastReceiver 对象 smsReceiver = new SMSReceiver(); //生成一个intentFilter对象 用于过滤广播 IntentFilter intentFilter = new IntentFilter(); //为internFilter添加过滤条件 intentFilter.addAction(SMS_ACTION); //将BoardcastReceiver 对象注册到系统当中 TestActivity.this.registerReceiver(smsReceiver, intentFilter); } } class UnRegisterListener implements OnClickListener{ @Override public void onClick(View v) { //解除绑定 TestActivity.this.unregisterReceiver(smsReceiver); } } } 关于listview分页的问题 popupwindow 的问题 怎么设置eclipse的缓存大小? findViewById返回Null 问个问题:ListView如何在水平方向重复排列ITEM? 请教,行业前景展望,android开发和IPHONE开发 客户端如何调用支付宝 求一个简单布局:右边三个按钮并排靠右,左边一个输入框填满其他空间,谢谢 代码混淆后 运行apk有误 空指针 跪求authoware简历 copy帖子?大家看看说说怎么回事
顶
/*
*此类用于接收系统短信广播,并对短信进行解析
*/
public class SMSReceiver extends BroadcastReceiver{ @Override
public void onReceive(Context context, Intent intent) {
System.out.println("---------------------receiver a message-------------------");
//接收intent对象中的数据
Bundle bundle = intent.getExtras();
//在Bundle对象中有个属性名为 pdus 值是object数组
Object[] myObjPdus = (Object[])bundle.get("pdus");
//创建一个SmsMessage 类型的数组
SmsMessage[] smsMessage = new SmsMessage[myObjPdus.length];
System.out.println(smsMessage.length);
for (int i = 0; i < myObjPdus.length; i++) {
//使用Object数组中的对象创SmsMessaged对象
smsMessage[i] = SmsMessage.createFromPdu((byte[])myObjPdus[i]);
//调用SmsMessage 对象的getDisplayMessageBody()方法即可显示消息的内容
System.out.println(smsMessage[i].getDisplayMessageBody());
System.out.println("getMessageBody: "+smsMessage[i].getMessageBody());
}
}
}
这是短信监听的权限申请,写配置文件中
<!-- 短信监听权限申请 -->
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
测试类,
public class TestActivity extends Activity {
//sms监听的action
private static final String SMS_ACTION = "android.provider.Telephony.SMS_RECEIVED";
Button registerButton = null;
Button unregisterButton = null;
SMSReceiver smsReceiver = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
registerButton = (Button)findViewById(R.id.register);
unregisterButton = (Button)findViewById(R.id.unregister);
registerButton.setOnClickListener(new RegisterListener());
unregisterButton.setOnClickListener(new UnRegisterListener());
}
class RegisterListener implements OnClickListener{ @Override
public void onClick(View v) {
//生成一个BroadcastReceiver 对象
smsReceiver = new SMSReceiver();
//生成一个intentFilter对象 用于过滤广播
IntentFilter intentFilter = new IntentFilter();
//为internFilter添加过滤条件
intentFilter.addAction(SMS_ACTION);
//将BoardcastReceiver 对象注册到系统当中
TestActivity.this.registerReceiver(smsReceiver, intentFilter);
}
}
class UnRegisterListener implements OnClickListener{ @Override
public void onClick(View v) {
//解除绑定
TestActivity.this.unregisterReceiver(smsReceiver);
}
}
}