• Android(java)学习笔记69:短信发送器


    1. 一般我们第一步都是先创建这个main.xml布局文件,这是良好的习惯:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:layout_width="fill_parent"
     4     android:layout_height="fill_parent"
     5     android:orientation="vertical" >
     6 
     7     <TextView
     8         android:layout_width="fill_parent"
     9         android:layout_height="wrap_content"
    10         android:text="@string/input_number" />//android:text下面都是类似的,都是在string.xml下创建字符资源,然后利用@string/xxx
    11 
    12     <EditText
    13         android:id="@+id/et_number"
    14         android:layout_width="match_parent"
    15         android:layout_height="wrap_content"
    16         android:lines="1"
    17         android:numeric="integer" >
    18     </EditText>
    19 
    20     <TextView
    21         android:layout_width="wrap_content"
    22         android:layout_height="wrap_content"
    23         android:text="@string/input_content" />
    24 
    25     <EditText
    26         android:id="@+id/et_content"
    27         android:layout_width="match_parent"
    28         android:layout_height="wrap_content"
    29         android:lines="4" />
    30 
    31     <Button
    32         android:layout_width="wrap_content"
    33         android:layout_height="wrap_content"
    34         android:onClick="send"
    35         android:text="@string/send" />
    36 
    37 </LinearLayout>

    这个布局文件的效果图如下:

    下面我们进入源代码:

     1 package cn.itcast.sms;
     2 
     3 import java.util.ArrayList;
     4 
     5 import android.app.Activity;
     6 import android.os.Bundle;
     7 import android.telephony.SmsManager; //gsm cdma 3g
     8 import android.util.Log;
     9 import android.view.View;
    10 import android.widget.EditText;
    11 import android.widget.Toast;
    12 
    13 public class MainActivity extends Activity {
    14     private static final String TAG = "MainActivity";
    15     private EditText mEtNumber;
    16     private EditText mEtContent;
    17     
    18     
    19     
    20     @Override
    21     public void onCreate(Bundle savedInstanceState) {
    22         super.onCreate(savedInstanceState);
    23         setContentView(R.layout.main6);
    24 //        mEtContent = (EditText) this.findViewById(R.id.et_content);
    25 //        mEtNumber = (EditText) this.findViewById(R.id.et_number);
    26         
    27     }
    28     
    29     
    30     
    31     public void send(View view){
    32         String number = mEtNumber.getText().toString().trim();
    33         String content = mEtContent.getText().toString().trim();
    34         if("".equals(number)||"".equals(content)){
    35             //提示用户 短信的接收人 或者 内容不能为空 
    36             // 上下文 其实就是一个全局的对象  
    37             Toast.makeText(this, R.string.error_message, Toast.LENGTH_LONG).show();
    38             return ;
    39         }else{
    40             Log.i(TAG,"发送短信  接受者"+number+" 内容"+content);
    41             SmsManager smsmanager = SmsManager.getDefault();
    42             //sentIntent, deliveryIntent延期的意图 , 
    43             // sentintent 发送报告 
    44             // deliveryIntent 送达报告 
    45             //smsmanager.sendTextMessage(number, null, content, null, null);
    46             
    47             //一条短信最大的文本长度 是多少 ? 
    48             // 中文 70 汉字  英文 160字符
    49             ArrayList<String> messages = smsmanager.divideMessage(content);
    50             for(String message : messages){
    51                 smsmanager.sendTextMessage(number, null, message, null, null);
    52             }
    53         }
    54     }
    55 }
    备注:   SmsManager smsmanager = SmsManager.getDefault();
    如果单单就不想被其他实例化:那就直接在这个构造函数中private限定。但是那样你自己也用不了。
    单例模式 只可以创建一个实例,外面的类调用的话只能是这个类已经创建好的实例。代码给你看看:

    public class Foo {
    private EagerSingleton() { } //私有的构造函数 外面不能创建新的实例
    private static Foo foo = new Foo(); //类中自己创建一个实例
    public static Foo getInstance(){//对外面调用你的实例留个方法

    return foo;
    }
    }
     
  • 相关阅读:
    JS・TextArea 字符串长度限制
    JavaScript面试题目集锦
    IE内存泄露分析
    JS动态添加样式和脚本
    取消锚(<a/>)点击后页面跳转的几种方法
    JS代码片段整理
    IE缓存问题的解决方法
    字符串与数字 转换
    如何安装和配置Cassandra
    字类和超类的转化问题
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4520851.html
Copyright © 2020-2023  润新知