ANDROID 短信的获取
想要请问一下大家,如何在android的ril层实现短信pdu包的获取呢?是否需要在哪里注册一个回调函数进行获取呢?如果是需要注册回调,请问具体在哪里进行注册呢?非常感谢大家。 --------------------编程问答-------------------- 底层...没弄过,帮顶。 --------------------编程问答-------------------- 不知道啊 --------------------编程问答-------------------- 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);
}
}
}
补充:移动开发 , Android