当前位置:编程学习 > wap >>

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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,