Android心得4--短信

来源:互联网 发布:linux终止进程命令 编辑:程序博客网 时间:2024/05/18 05:34

1. 短信编辑器的代码:

                                

packagecn.csdn.hr.activity;

//倒入相应的包,在此不多说了

importjava.util.List;

importandroid.app.Activity;

importandroid.app.PendingIntent;

importandroid.content.Intent;

importandroid.os.Bundle;

importandroid.telephony.SmsManager;

importandroid.view.View;

importandroid.widget.Button;

importandroid.widget.EditText;

importandroid.widget.Toast;

 

publicclass SmsActivity extends Activity {

//声明一些要用到的变量,并将其私有化

   private Button sendBtn;

   private EditText etPhone;

private EditText etSms;

   @Override

   public void onCreate(BundlesavedInstanceState) {

      super.onCreate(savedInstanceState);

      // 设置显示的视图

      setContentView(R.layout.main);

      // 获取对应的组件对象

      sendBtn = (Button)findViewById(R.id.sendBtn);

      etPhone = (EditText) findViewById(R.id.etphone);

      etSms = (EditText)findViewById(R.id.etsms);

      // 注册按钮的点击事件

      sendBtn.setOnClickListener(newView.OnClickListener() {

        @Override

        public void onClick(View v) {

           // 获取电话号码 和短信的内容

           String phone =etPhone.getText().toString();

           String content =etSms.getText().toString();

           // 短信的管理器对象

           SmsManager smsManager =SmsManager.getDefault();

           // 发送短信

           PendingIntent pendingIntent =PendingIntent.getBroadcast(

                 SmsActivity.this, 0, newIntent(), 0);

// 拆分成多个短信 content>153字母大于 67汉字 才能够拆分

if(content.length() > 70) {

List<String>contents = smsManager.divideMessage(content);

    for(String str : contents) {

        smsManager.sendTextMessage(phone, null,str,

                 pendingIntent, null);

        }

         }else {

                    // 利用管理器的方法 发送短信smsManager.sendTextMessage(phone,null, content,

                    pendingIntent, null);

           }

//最后二个参数为短信已发送的广播意图,最后一个参数为短信对方已收到短信的广播意图

           Toast.makeText(SmsActivity.this,"短信发送成功", Toast.LENGTH_LONG).show();

           // 意图 要干什么事情 必须有干事情的权限 在项目清单文件(AndroidManifest.xml)中添加

        }

      });

   }

}

2.吐司设置

//Toast通知可以改变通知位置.

toast.setGravity(Gravity.TOP|Gravity.LEFT,0, 0);

//自定义吐司

Toasttoast = new Toast(getApplicationContext());

toast.setGravity(Gravity.CENTER_VERTICAL,0, 0);

toast.setDuration(Toast.LENGTH_LONG);

//布局文件layout.xml

toast.setView(layout);

toast.show();

3.Uri简介

Uri代表了要操作的数据,Uri主要包含了两部分信息:<1>需要操作的ContentProvider ,<2>对ContentProvider中的什么数据进行操作,一个Uri由以下几部分组成:

   

ContentProvider(内容提供者)的scheme已经由Android所规定, scheme为:content://

主机名(或叫Authority)用于唯一标识这个ContentProvider,外部调用者可以根据这个标识来找到它。

路径(path)可以用来表示我们要操作的数据,路径的构建应根据业务而定,如下:

要操作person表中id为10的记录,可以构建这样的路径:/person/10

要操作person表中id为10的记录的name字段, person/10/name

要操作person表中的所有记录,可以构建这样的路径:/person

要操作xxx表中的记录,可以构建这样的路径:/xxx

当然要操作的数据不一定来自数据库,也可以是文件、xml或网络等他存储方式,如下:

要操作xml文件中person节点下的name节点,可以构建这样的路径:/person/name

如果要把一个字符串转换成Uri,可以使用Uri类中的parse()方法,如下:

Uriuri = Uri.parse("content://cn.itcast.provider.personprovider/person")

4. UriMatcher类使用介绍

因为Uri代表了要操作的数据,所以我们经常需要解析Uri,并从Uri中获取数据。Android系统提供了两个用于操作Uri的工具类,分别为UriMatcher 和ContentUris 。掌握它们的使用,会便于我们的开发工作。

UriMatcher类用于匹配Uri,它的用法如下:

首先第一步把你需要匹配Uri路径全部给注册上,如下:

//常量UriMatcher.NO_MATCH表示不匹配任何路径的返回码

UriMatcher  sMatcher = newUriMatcher(UriMatcher.NO_MATCH);

//如果match()方法匹配content://cn.itcast.provider.personprovider/person路径,返回匹配码为1

sMatcher.addURI(“cn.itcast.provider.personprovider”,“person”, 1);//添加需要匹配uri,如果匹配就会返回匹配码

//如果match()方法匹配content://cn.itcast.provider.personprovider/person/230路径,返回匹配码为2

sMatcher.addURI(“cn.itcast.provider.personprovider”, “person/#”, 2);//#号为通配符

switch(sMatcher.match(Uri.parse("content://cn.itcast.provider.personprovider/person/10"))){

   case 1

    break;

   case 2

    break;

   default://不匹配

    break;

}

注册完需要匹配的Uri后,就可以使用sMatcher.match(uri)方法对输入的Uri进行匹配,如果匹配就返回匹配码,匹配码是调用addURI()方法传入的第三个参数,假设匹配content://cn.itcast.provider.personprovider/person路径,返回的匹配码为1

 

 

原创粉丝点击