第一次写技术方面的东西,有点小紧张。下面把我学习Android之后,尝试写一些简单的东西拿出来分享一下。
一开始的时候写了很简单的app,比如短信发送和打电话,使用permission完成授权。
发送短信实际是调用系统的api来完成的,SmsManager类不能new,通过调用其静态方法getDefault()获得对象来完成消息的发送
public void onClick(View v) {
//每个View控件都有一个id,View是所有界面元素的父类
switch (v.getId()) {
case R.id.btSent:
String number=editNumber.getText().toString().trim();
String content=editContent.getText().toString().trim();
<span style="white-space:pre"> </span>//使用TextUtils文本工具的静态方法isEmpty()方法来检查输入的号码和文本内容是否为空
if (TextUtils.isEmpty(number)||TextUtils.isEmpty(content)) {
Toast.makeText(this, "号码或者内容不能为空!", Toast.LENGTH_SHORT).show();
}else {
SmsManager smsManager=SmsManager.getDefault();
//消息内容过长,我们可以将其分段发送,使用divideMessage()方法
ArrayList<String> strs=smsManager.divideMessage(content);
for (Iterator iter = strs.iterator(); iter.hasNext();) {
String subContent = (String) iter.next();
<span style="white-space:pre"> </span>/*第一个参数是接收短信的号码,第二个参数是短信服务中心,如果为null,就是用当前默认的短信服务中心>//第三个是要发送的短信内 容,第四个是发送报告,第五个是短信发送到接收者那里,状态报告生成的pdu*/
smsManager.sendTextMessage(number, null, subContent, null, null);
}
//发送完之后提醒发送成功
Toast.makeText(this, "消息已发送!", Toast.LENGTH_SHORT).show();
}
break;
default:
break;
}
}
//最后一定及得授权SEND_SMS
功能比较简单,今天试着写了一个体重检测器,在登录页面成功登录之后跳转到体重检测页面。
发现Intent很重要。
在Android中,每一个界面都是Activity,所以在创建一个新的界面的时候,不是new 一个class,而是项目下右击new一个Android Activity无论程序还是界面,都不允许直接调用,要求使用请求Intent(意向)来实现。
android系统是全托管的,跟界面或者系统功能有关的,用户无法主动new,只能发出请求,例如调用界面、访问网络、 打电话、地图定位等,比如下面一个示例:
//登录按钮注册的事件中输入正确的用户名和密码,提示登录成功,并创建一个意向Intent对象,跳转到体重检测的界面
//获得上下文环境,可以通过注册监听的控件所在的上下文得到,也可以使用主类.this得到,或者getApplicationContext得到
Toast.makeText(v.getContext(), "登陆成功", 0).show();
//第一个参数是当前界面对象,即上下文;第二个参数是所要跳转的目标类,不一定具有界面对象,所以在这里使用android的特殊反射模式
Intent intent=new Intent(getApplicationContext(), WeightActivity.class);
//因为不同界面通过intent调用,所以有什么需要传递的内容,交给intent就好了
//传递的方式有两种
//1.直接挂在intent上,类似于hashtable的格式 , put类型(String key,value),
//intent.putExtra("one", s);
//intent.putExtra("shu", 123);//只能传递基本数据类型+字符串,以及序列化内容
//2.使用包 封装,/获得一个封装包,将信息封装在里面
Bundle bao=new Bundle();
bao.putString("userName", name);
intent.putExtras(bao);
startActivity(intent);//最后一定要记得启动
//在跳转之后的界面中,不需要new一个新的intent
//接受传进来的值,得到请求当前界面的意向
Intent intent=getIntent();
//通过意向得到bundle
Bundle bao=intent.getExtras();
//取出bundle中的用户名,
name=bao.getString("userName");