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

系统 1696 0

9、另一种发送短信的方式:使用Intent

上篇 我们使用SmsManager类实现了发送SMS的功能,且并没有用到内置的客户端。实际上,我们很少这样做,自己在应用程序中去完全实现一个完整的SMS客户端。相反我们会去利用它,将需要发送的内容和目的手机号传递给内置的SMS客户端,然后发送。

下面我就向大家介绍如何利用Intent实现利用将我们的东西传递给内置SMS客户端发送我们SMS。为了实现这个功能,就要用到 startActivity("指定一个Intent") 方法,且指定Intent的动作为 Intent.ACTION_SENDTO ,用 sms: 指定目标手机号,用 sms_body 指定信息内容。java源文件如下所示:

                
                
                  
                    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跟上篇中的一样,这里不再累述。运行结果如下图:

image

图2、程序主界面

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

image

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

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

image

图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 intent
                  
                  
Intent 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的构建。

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


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论