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

一个短信的问题,求助

刚刚接触android,想完成如下的功能,打开一个activity, 里面有一个TextView的控件,如果后台来一条或者多条短信,短信内容会显示在TextView的控件中,问题是后台短信的内容是怎么传到这个activity(已经启动了)中,显示到TextView中的。求指教。 --------------------编程问答-------------------- 啊,比如绑定服务,广播 --------------------编程问答--------------------
引用 1 楼 DrSmart 的回复:
啊,比如绑定服务,广播

在广播中收到了短信后,具体怎么传呢,不是很了解。 --------------------编程问答-------------------- 你在你的应用注册广播,然后当你收到一个短信的时候android系统自身的处理机制就会发送广播,而你就能接受到,不用你做任何处理,这是android底层完成的不用你处理你需要的仅仅是对短信的读取,怎么读取短信这个你就网上搜吧,一搜代码一大堆~~
--------------------编程问答--------------------
public class DisplayActivity extends Activity {

TextView textview;
ScrollView scroll;
        String textstr;  

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.chatroom);
textview = (TextView)findViewById(R.id.displayview);
scroll = (ScrollView)findViewById(R.id.scroll_view);
         }
        public class SmsReceiver extends BroadcastReceiver//在此处添加代码可行吗?
{
public void onReceive(Context context, Intent intent)
{
if (intent.getAction().equals(
"android.provider.Telephony.SMS_RECEIVED"))
{
abortBroadcast();
StringBuilder sb = new StringBuilder();
Bundle bundle = intent.getExtras();
if (bundle != null)
{
Object[] pdus = (Object[]) bundle.get("pdus");
 
SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++)
{
messages[i] = SmsMessage
.createFromPdu((byte[]) pdus[i]);
}
for (SmsMessage message : messages)
{
sb.append("短信来源:");
// 获得接收短信的电话号码
sb.append(message.getDisplayOriginatingAddress());
sb.append("\n------短信内容------\n");
// 获得短信的内容
sb.append(message.getDisplayMessageBody());
////////////////////////////////////////////////////////////////////////// textview.setText(message.getDisplayMessageBody().toString());        //这儿在控件中加短信内容,没有反应?
}
}
}
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}


}
--------------------编程问答-------------------- 代码如下,在OnReceive()中无法在TextView控件中显示,帮忙看下
public class DisplayActivity extends Activity {

TextView textview;
ScrollView scroll;
        String textstr;  

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.chatroom);
textview = (TextView)findViewById(R.id.displayview);
scroll = (ScrollView)findViewById(R.id.scroll_view);
         }
        public class SmsReceiver extends BroadcastReceiver
       //在此处添加代码可行吗?
{
public void onReceive(Context context, Intent intent)
{
if (intent.getAction().equals(
"android.provider.Telephony.SMS_RECEIVED"))
{
abortBroadcast();
StringBuilder sb = new StringBuilder();
Bundle bundle = intent.getExtras();
if (bundle != null)
{
Object[] pdus = (Object[]) bundle.get("pdus");
 
SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++)
{
messages[i] = SmsMessage
.createFromPdu((byte[]) pdus[i]);
}
for (SmsMessage message : messages)
{
sb.append("短信来源:");
// 获得接收短信的电话号码
sb.append(message.getDisplayOriginatingAddress());
sb.append("\n------短信内容------\n");
// 获得短信的内容
sb.append(message.getDisplayMessageBody());
//////////////////////////////////////////////////////////////////////////
textview.setText(message.getDisplayMessageBody().toString());        
//这儿在控件中加短信内容,没有反应?
}
}
}
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}


}
--------------------编程问答-------------------- 1)Object[] pdus = (Object[])intent.getExtras().get("pdus");获得短信数据
(2)byte[] pdu = (byte[])pdus[0];
(3)SmsMessage message  = SmsMessage.createFromPdu(pdu);将字节数组封装为SmsMessage
(4)String content = message.getMessageBody();获得短信内容
(5)String date = new Date(message.getTimestampMillis()).toLocaleString();获得短信时间
(6)String senderNumber = message.getOriginatingAddress();获得发送方号码 --------------------编程问答-------------------- 你就不能发个消息给你的activity --------------------编程问答-------------------- public class DisplayActivity extends Activity {

protected void onCreate(Bundle savedInstanceState) {......... }
 
 public class SmsReceiver extends BroadcastReceiver//这样的框架可以吗?
 { 
    public void onReceive(Context context, Intent intent)
     {..............}
 }

}
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,