打印

[求助]SDK 1.0 SMS 短信读取 相关API

[求助]SDK 1.0 SMS 短信读取 相关API

跟着Android essential 这本书走
写SMSbroadcastreceiver 之后 (P31
onReveiveIntent() 这里
Telephony.Sms.Intents.getMessageFromIntent(intent)

这个函数在SDK1.0版是没有的
Telephony下连SMS 都没有

GOOGLE ANDROID 主页那搜索一下
还看了那个API变化列表
从M15到1.0
头看晕了 还是没找到类似的解析intent对象的API
不要 是读的短信 INTENT
都要动用XML 解析吧?

TOP

没做过SMS的东西,不过你看看
android.telephony.gsm.SmsMessage 里的        getMessageBody()
不知道是否能帮到你

TOP

支持~

TOP

引用:
原帖由 ych.tiger 于 2008-10-3 20:50 发表
没做过SMS的东西,不过你看看
android.telephony.gsm.SmsMessage 里的        getMessageBody()
不知道是否能帮到你
这个我也看到了
但那要先得到SmsMessage 对象

现在的情景是
写一个SmsReceiver
用户有新短信的时候
该程序启动
读取短信内容
和设定的内容匹配
就继续预定的动作 必入播放音乐
否者退出程序

关键是
得到系统消息之后
我们拿到的是INTENT
不是SmsMessage 对象
原来旧版本是有这么个函数 Telephony.Sms.Intents.getMessageFromIntent(intent)
返回的是SmsMessage 对象数组
现在不知道怎么得到SmsMessage对象
奇怪的是GOOGLE 文档
我也没看到 有关SmsMessage对象如何得到的内容

TOP

刚才尝试了一下,没有解决问题。研究中~~~~

TOP

翻了一下GOOGLE GROUP
总算发现点东西说

public class ServerMessagesReceiver extends BroadcastReceiver {

    static final String ACTION =
"android.provider.Telephony.SMS_RECEIVED";

    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(ACTION)) {
                 StringBuilder buf = new StringBuilder();
                 Bundle bundle = intent.getExtras();
                 if (bundle != null) {
                         Object[] pdusObj = (Object[]) bundle.get("pdus");
                         SmsMessage[] messages = new SmsMessage[pdusObj.length];
                         for (int i = 0; i<pdusObj.length; i++) {
                                 messages = SmsMessage.createFromPdu ((byte[]) pdusObj);
                         }




by           Cristina

现在短信的读取就颇为麻烦了
要从INTENT 中去挖掘点滴

以上代码我还未试过
现在就去继续那个例子

TOP

我也刚Google了这个例子,试了一下,效果还不错。

在Doc中怎么没有提到有"android.provider.Telephony.SMS_RECEIVED";这个Intent ?

TOP

works code

public class PrankSMSReceiver extends BroadcastReceiver
{
static final String action="android.provider.Telephony.SMS_RECEIVED";
    public void onReceive(Context context, Intent intent)
    {
        SmsMessage[] msg= null;
     if (intent.getAction().equals(action))
     {
          StringBuilder buf = new StringBuilder();
          Bundle bundle = intent.getExtras();
          if (bundle != null) {
                  Object[] pdusObj = (Object[]) bundle.get("pdus");
                  msg= new SmsMessage[pdusObj.length];
                  for (int i = 0; i<pdusObj.length; i++)
                          msg = SmsMessage.createFromPdu ((byte[]) pdusObj);
          }
        }
   
   for(int i = 0; i < msg.length; i++)
   {
   String msgTxt = msg.getMessageBody();
   if (msgTxt.equals("Testing!"))
   {
    //Start the Activity
    Intent startActivity = new Intent();
//    startActivity.setLaunchFlags(Intent.NEW_TASK_LAUNCH);
    startActivity.setAction("com.apress.START_THE_MUSIC");
    context.startActivity(startActivity);
   
    return;
   }
  }
   
   return;
}
    }

TOP

学习中   感觉android整个框架还是有点乱
。。

TOP

是不是要修改AndroidManifest.xml文件啊?
android.provider.Telephony.SMS_RECEIVED这个真的有用?还是跟sdk版本有关呢?

TOP