Android(java)学习笔记86:案例短信发送器
16lz
2022-01-11
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/xxx11 12 <EditText13 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 <TextView21 android:layout_width="wrap_content"22 android:layout_height="wrap_content"23 android:text="@string/input_content" />24 25 <EditText26 android:id="@+id/et_content"27 android:layout_width="match_parent"28 android:layout_height="wrap_content"29 android:lines="4" />30 31 <Button32 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 @Override21 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;
}
}
更多相关文章
- React Native调用Android原生组件
- Android教程之android数据库编程
- 书籍推荐下载
- android用户界面之菜单(Menu)教程实例汇总
- 从零开始学习Android一
- [Android实例] Android网络收音机项目(内含源码)
- android 启动Activity的四种模式
- Android官方培训课程中文版(v0.9.7)
- 用Android(安卓)Studio进行NDK开发(简化流程)