首页 > PHP资讯 > 工具库 > Android实现发送短信的小程序示例代码

Android实现发送短信的小程序示例代码

工具库
这篇文章主要介绍了Android开发中实现发送短信的小程序示例,文中还附带了一个监听广播接收者的升级版短信发送例子,需要的朋友可以参考下

package cn.com.sms.send;  import java.util.ArrayList; import java.util.Iterator;  import android.app.Activity; import android.app.PendingIntent; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsManager; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast;  public class Send extends Activity {   private String message;   private String number ;   private EditText editText;   private EditText editText2;   @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);      editText = (EditText) this.findViewById(R.id.number);      editText2 = (EditText)this.findViewById(R.id.message);          Button button = (Button)this.findViewById(R.id.button);     button.setOnClickListener(new View.OnClickListener() {              public void onClick(View v) {          number = editText.getText().toString();          message = editText2.getText().toString();          // 在LogCat中可以查看到number和message的相关信息          Log.i("number", number);          Log.i("message", message);          /*获取系统默认的信息管理器,一定要注意的是SmsManager是android.telephony.SmsManager;这和          *我们使用的版本有关,在 Android 2.0 以前 应该使用 android.telephony.gsm.SmsManager          *Android 2.0 之后的版本应该用 android.telephony.SmsManager。          */         SmsManager smsManager = SmsManager.getDefault();         /*PendingIntent.getBroadcast返回一个用于广播的PendingIntent对象,类似于调用Content.sendBroadcast();          */         PendingIntent paIntent = PendingIntent.getBroadcast(Send.this, 0, new Intent("SMS_SENT"), 0);         PendingIntent deliveryIntent = PendingIntent.getBroadcast(Send.this, 0, new Intent("SMS_DELIVERED"), 0);         // smsManager.pideMessage有些时候短信如果超过了字数,我们就需要这个方法来帮我们拆分短信内容。         ArrayList smses = smsManager.pideMessage(message);         Iterator iterator = smses.iterator();         while(iterator.hasNext()){           String temp = iterator.next();           //发送短信           smsManager.sendTextMessage(number, null, temp, paIntent, deliveryIntent);         }         // 弹出一个浮动框显示提示内容,Toast.LENGTH_LONG代表浮动框显示时间的长短         Toast.makeText(Send.this, "短信发送完成", Toast.LENGTH_LONG).show();                 }     });        } }

main.xml


          

AndroidManifest.xml


                                                          

最终效果图为:

SmsManager smsMgr = SmsManager.getDefault();  smsMgr.sendTextMessage(address, null, message, null, null);


显示写短信界面:


Uri smsToUri = Uri.parse("smsto://10086");  Intent mIntent = new Intent( android.content.Intent.ACTION_SENDTO, smsToUri );  startActivity( mIntent );


发送电子邮件:


Intent i = new Intent(Intent.ACTION_SEND);  i.putExtra(Intent.EXTRA_EMAIL, address);  i.putExtra(Intent.EXTRA_SUBJECT, filename);  i.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + filename)); ;  i.setType("text/csv");  startActivity(Intent.createChooser(i, "EMail File"));

升级版:
该代码为其添加了广播接收者的监听。详细代码如下


package cn.com.sms.send;  import java.util.ArrayList; import java.util.Iterator;  import android.app.Activity; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.telephony.SmsManager; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast;  public class Send extends Activity {   private String message;   private String number ;   private EditText editText;   private EditText editText2;   @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);      editText = (EditText) this.findViewById(R.id.number);      editText2 = (EditText)this.findViewById(R.id.message);          Button button = (Button)this.findViewById(R.id.button);     button.setOnClickListener(new View.OnClickListener() {              public void onClick(View v) {          number = editText.getText().toString();          message = editText2.getText().toString();          // 在LogCat中可以查看到number和message的相关信息          Log.i("number", number);          Log.i("message", message);          /*获取系统默认的信息管理器,一定要注意的是SmsManager是android.telephony.SmsManager;这和          *我们使用的版本有关,在 Android 2.0 以前 应该使用 android.telephony.gsm.SmsManager          *Android 2.0 之后的版本应该用 android.telephony.SmsManager。          */         SmsManager smsManager = SmsManager.getDefault();         /*PendingIntent.getBroadcast返回一个用于广播的PendingIntent对象,类似于调用Content.sendBroadcast();          */         PendingIntent paIntent = PendingIntent.getBroadcast(Send.this, 0, new Intent("SMS_SENT2"), 0);         PendingIntent deliveryIntent = PendingIntent.getBroadcast(Send.this, 0, new Intent("SMS_DELIVERED2"), 0);                  // 注册一个BroadcastReceiver,当有匹配它的IntentFilter的Intent出现时,该方法会被触发         registerReceiver(new BroadcastReceiver(){            @Override           public void onReceive(Context context, Intent intent) {             int resultCode = getResultCode();             switch(resultCode){             case Activity.RESULT_OK:               Toast.makeText(getBaseContext(), "信息发送成功了哦、", Toast.LENGTH_LONG).show();               break;             default:               Toast.makeText(getBaseContext(), "信息发送失败了哦、", Toast.LENGTH_LONG).show();                            }           }                               }, new IntentFilter("SMS_SENT2"));                           registerReceiver(new BroadcastReceiver() {                      @Override           public void onReceive(Context context, Intent intent) {             Toast.makeText(getBaseContext(), "deliveryIntent", Toast.LENGTH_LONG).show();             Log.i("短信接收人是否查看信息", "看了");           }         }, new IntentFilter("SMS_DELIVERED2"));                                    // smsManager.pideMessage有些时候短信如果超过了字数,我们就需要这个方法来帮我们拆分短信内容。         ArrayList smses = smsManager.pideMessage(message);         Iterator iterator = smses.iterator();         while(iterator.hasNext()){           String temp = iterator.next();           //发送短信           smsManager.sendTextMessage(number, null, temp, paIntent, deliveryIntent);         }         // 弹出一个浮动框显示提示内容,Toast.LENGTH_LONG代表浮动框显示时间的长短         Toast.makeText(Send.this, "短信发送完成", Toast.LENGTH_LONG).show();                 }     });        } }

main.xml与AndroidManifest.xml和前面的代码一样。

registerReceiver()用于注册广播接受者。该方法在Content中这样定义的。

public abstract Intent registerReceiver(BroadcastReceiver receiver,IntentFilter filter);系统如果查询到满足filter的广播,便会教给receiver,让其处理。一般都是在其onReceive()方法中处理。

如果不是在代码中主动通过registerReceiver()进行注册,那么就要从AndroidManifest.xml进行配置,代码如下


    

这里需要注意,在配置文件中activity标签和receiver标签是平级的。

在模拟器中发送中文会接收方出现乱码的问题,但是在真机中,就不会出现乱码的情况了。所以开发者只需要正常开发短信功能,不需要编码转换。

以上就是Android实现发送短信的小程序示例代码的详细内容,更多请关注 第一PHP社区 其它相关文章!

工具库

本文由欣才IT学院整理发布,未经许可,禁止转载。
支持34不支持0