原创 Android——两个模拟器之间互相发短信

2010-10-24 21:29 2495 5 5 分类: 医疗电子

 


发送短信的关键程序是通过SmsManager对象的sendTextMessage()方法来完成,其中sendTextMessage()方法需传入五个值,依次是收件人地址(String),发送地址(String),发送服务(PendingIntent)与送达服务(PendingIntent),其中收件人与正文是不可为null的两个参数.


本例子通过两个模拟器,5554,5556互相通信,下面我将分5个步骤,讲一下发送短信程序是如何实现的.


Step 1:建立一个Android工程,我们命名为SMSDemo.


Step 2:设计一下程序的UI,也就是主界面main.xml,这里用AbsoluteLayout,有点丑见笑了!代码如下:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <AbsoluteLayout 
  3.   android:layout_width="fill_parent" 
  4.   android:layout_height="fill_parent" 
  5.   xmlns:android="http://schemas.android.com/apk/res/android" 
  6.   > 
  7.   <TextView 
  8.     android:layout_width="wrap_content" 
  9.     android:layout_height="wrap_content" 
  10.     android:text="收件 人:" 
  11.     android:textSize="16sp" 
  12.     android:layout_x="0px" 
  13.     android:layout_y="12px" 
  14.   > 
  15.   </TextView> 
  16.   <EditText 
  17.     android:id="@+id/myEditText1" 
  18.     android:layout_width="fill_parent" 
  19.     android:layout_height="wrap_content" 
  20.     android:text="" 
  21.     android:textSize="18sp" 
  22.     android:layout_x="60px" 
  23.     android:layout_y="2px" 
  24.   > 
  25.   </EditText> 
  26.   <EditText 
  27.     android:id="@+id/myEditText2" 
  28.     android:layout_width="fill_parent" 
  29.     android:layout_height="223px" 
  30.     android:text="" 
  31.     android:textSize="18sp" 
  32.     android:layout_x="0px" 
  33.     android:layout_y="52px" 
  34.   > 
  35.   </EditText> 
  36.   <Button 
  37.     android:id="@+id/myButton1" 
  38.     android:layout_width="162px" 
  39.     android:layout_height="wrap_content" 
  40.     android:text="发送短信" 
  41.     android:layout_x="80px" 
  42.     android:layout_y="302px" 
  43.   > 
  44.   </Button> 
  45. </AbsoluteLayout> 
  46.  
  47.  
  48.  

Step 3:主控制程序SMSDemo.java如下: 

  1. package com.android.test;  
  2.  
  3. import android.app.Activity;  
  4. import android.app.PendingIntent;  
  5. import android.content.Intent;  
  6. import android.os.Bundle;  
  7. import android.telephony.gsm.SmsManager;  
  8. import android.view.View;  
  9. import android.widget.Button;  
  10. import android.widget.EditText;  
  11. import android.widget.Toast;  
  12.  
  13. public class SMSDemo extends Activity {  
  14.      
  15.  private Button mButton1;  
  16.  private EditText mEditText1;  
  17.  private EditText mEditText2;  
  18.     public void onCreate(Bundle savedInstanceState) {  
  19.         super.onCreate(savedInstanceState);  
  20.         setContentView(R.layout.main);  
  21.           
  22.         //获取资源  
  23.         mEditText1 = (EditText)findViewById(R.id.myEditText1);  
  24.         mEditText2 = (EditText)findViewById(R.id.myEditText2);  
  25.         mButton1 = (Button)findViewById(R.id.myButton1);  
  26.         //发送短信的响应  
  27.         mButton1.setOnClickListener(new Button.OnClickListener(){  
  28.  
  29.    public void onClick(View v) {  
  30.     //获取发送地址和发送内容  
  31.     String messageAddress = mEditText1.getText().toString();  
  32.     String messageContent = mEditText2.getText().toString();  
  33.       
  34.     //构建一取得default instance的SmsManager对象  
  35.       
  36.     SmsManager smsManager = SmsManager.getDefault();  
  37.     //检查输入内容是否为空,这里为了简单就没有判断是否是号码,短信内容长度的限制也没有做  
  38.     if(messageAddress.trim().length()!=0 && messageContent.trim().length()!=0)  
  39.     {  
  40.      try{  
  41.       PendingIntent pintent = PendingIntent.getBroadcast(SMSDemo.this0new Intent(), 0);  
  42.       smsManager.sendTextMessage(messageAddress, null, messageContent, pintent, null);  
  43.         
  44.      }catch(Exception e)  
  45.      {  
  46.       e.printStackTrace();  
  47.      }  
  48.      //提示发送成功  
  49.      Toast.makeText(SMSDemo.this"发送成功", Toast.LENGTH_LONG).show();  
  50.     }  
  51.     else{  
  52.      Toast.makeText(SMSDemo.this"发送地址或者内容不能为空", Toast.LENGTH_SHORT).show();  
  53.     }  
  54.    }  
  55.            
  56.         });  
  57.     }  
  58. }  

Step 4:增加拨打电话权限AndroidManifest.xml代码如下:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  3.       package="com.android.test" 
  4.       android:versionCode="1" 
  5.       android:versionName="1.0"> 
  6.     <application android:icon="@drawable/icon" android:label="@string/app_name"> 
  7.         <activity android:name=".SMSDemo" 
  8.                   android:label="@string/app_name"> 
  9.             <intent-filter> 
  10.                 <action android:name="android.intent.action.MAIN" /> 
  11.                 <category android:name="android.intent.category.LAUNCHER" /> 
  12.             </intent-filter> 
  13.         </activity> 
  14.  
  15.     </application> 
  16.     <uses-sdk android:minSdkVersion="3" /> 
  17.  <uses-permission android:name="android.permission.SEND_SMS"></uses-permission> 
  18. </manifest>   
  19.  

Step 5:run it!效果图如下,5554给5556发送了一条短信:





 


 本文上面部分出自 “Android_Tutor” 博客,请务必保留此出处http://weizhulin.blog.51cto.com/1556324/311699


 

 

发现按照上面的步骤还是不行,因为需要建立两个模拟器,所以在网上找到下面的文章,解决了这个问题。原文如下,出自:
 


                        

 

之前有哥们也写过这个东西,这次重新写的主要原因是那哥们 我按照他的东西做了后发现还是不行,这次就当对那哥们的一个补充吧。

具体步骤:

首先,我们要启动两个android模拟器。只有这样,才能模拟效果
1.第一个模拟器,我们通过eclipse启动。

具体方法是:打开你的eclipse,随便运行一个项目Eclipse会帮你启动我们的第一个android模拟器。ID为5554.

2.  第二个模拟器,我们通过DOS命令启动。具体方法:“开始”-“运行”-“CMD打开一个命令行窗口。然后cd 命令到你的android SDK目录的tools文件夹下面,输入“emulator -data foo”,回车。稍等片刻,系统即可帮你启动又一个新的android模拟器。ID为5556.

3.于是两个就有了2个模拟器的ID了,这里的ID号相当于真机上的手机号码。收发短信和接打电话全靠他们。
好了,两个全新的模拟器我们已经启动完毕。现在来测试接打电话和收发短信。

怎么测试呢。

呵呵 很简单 ,就像你 有2部手机一样 ,A手机跟B手机打,或者反过来。
B手机跟A手机发短信,或者反过来 随便你了

这个时候 关键的来了 2个手机想沟通 。 就得有个号码

这个时候 2个模拟器的 ID 起作用了   这2个模拟器的ID 就是对应的模拟器的电话号码

这个时候 你就可以模拟电话跟短信了

注意 : 如果发现打不通 或者发不了短信 查看一下 你当前模拟器的那个网络信号状态

如果是飞行模式 是实现不了的哦。

好了 就这样  就可以实现模拟电话跟短信了

还不清楚的地方 请留言 谢谢!

 

文章评论0条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /2 下一条