短信的收发及在android模拟器其间实践(4)

短信的收发及在android模拟器之间实践(4)package skynet.com.cnblogs.wwwimport android.app.Activityim

短信的收发及在android模拟器之间实践(4)

package skynet.com.cnblogs.www;import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class TextMessage extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnSend = (Button) findViewById(R.id.btnSend); edtPhoneNo = (EditText) findViewById(R.id.edtPhoneNo); edtContent = (EditText) findViewById(R.id.edtContent); btnSend.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String phoneNo = edtPhoneNo.getText().toString(); String message = edtContent.getText().toString(); if (phoneNo.length() > 0 && message.length() > 0) { Intent smsIntent=new Intent(Intent.ACTION_SENDTO, Uri.parse("sms:"+edtPhoneNo.getText().toString())); smsIntent.putExtra("sms_body", edtContent.getText().toString()); TextMessage.this.startActivity(smsIntent); } else Toast.makeText(getBaseContext(), "Please enter both phone number and message.", Toast.LENGTH_SHORT).show(); } }); } private Button btnSend; private EditText edtPhoneNo; private EditText edtContent;}

?

注意代码中的红色粗体部分,就是实现这个功能的核心代码!布局文件maim.xml和值文件string.xml跟上篇中的一样,这里不再累述。运行结果如下图:

短信的收发及在android模拟器其间实践(4)

图2、程序主界面

点击send按钮之后,转到内置的SMS客户端并且将我们输入的值传入了,如下图:

短信的收发及在android模拟器其间实践(4)

图3、内容传至内置SMS客户端

发送之后,5556号android模拟器会收到我们发送的消息,如下图:

短信的收发及在android模拟器其间实践(4)

图5、发送之后5556号android模拟器收到消息

10、增强SMS为MMS

我们讲了这么多,都还只是实现了简单的发生SMS的功能,如果我们想发送图片、音频怎么办(⊙o⊙)?不急,现在我们就将第9节介绍的SMS发送程序改造为MMS。

我们可以附加一个文件到我们的消息做为附件发送,用Intent.EXTRA_STREAM和附件资源的Uri做为参数调用putExtra()方法,附加到信息。并设置Intent的类型为mime-type。要注意的是:内置的MMS并不包括一个ACTION_SENDTO动作的Intent接收器,我们需要使用的动作类型是ACTION_SEND,并且目标手机号不在是使用sms:而是address。主要代码如下:

// Get the URI of a piece of media to attach.Uri attached_Uri = Uri.parse("content://media/external/images/media/1");// Create a new MMS intentIntent mmsIntent = new Intent(Intent.ACTION_SEND, attached_Uri);mmsIntent.putExtra("sms_body", edtContent.getText().toString());mmsIntent.putExtra("address", edtPhoneNo.getText().toString());mmsIntent.putExtra(Intent.EXTRA_STREAM, attached_Uri);mmsIntent.setType("image/png");startActivity(mmsIntent);

?

将这段代码替换第9节中的红色粗体代码,就完成而来一个MMS的构建。