1.如果创建一个新的Activity(继承android.app.Activity)
[1]Android的四大组件都要在清单文件里面配置
[2]如果你想让你的应用有多个启动图标 你的Activity需要这样配置
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
[3]Activity下的lable(标题)和icon(标题的图标,也是app的图标)属性可以和Application节点的属性不一样)属性可以和Application节点的属性不一样 默认用Application节点下的属性
[4]一个Android应用一般我们就配置一个启动图标就可以 看见的其他页面都是从第一个页面跳转进去
2.隐式意图(intent)
定义:通过指定一组动作或者数据
[1]//点击按钮 实现拨打电话的功能
public void click1(View v){
//1.创建意图对象
Intent intent=new Intent();
//2.设置拨打的动作
intent.setAction(Intent.ACTION_CALL);
//3.设置拨打的数据
intent.setData(Uri.parse("tel:"+119));
//4.开启Activity 记得加上权限<uses-permission android:name="android.permission.CALL_PHONE"/>
startActivity(intent);
}
//点击按钮 跳转到TestActivity
public void click2(View v){
//1.创建意图对象 意图就是我要完成一件事
Intent intent=new Intent();
//2.设置跳转的动作
intent.setAction("com.itheima.testactivity");
//3.设置category
intent.addCategory("android.intent.category.DEFAULT");
//4.设置数据
//intent.setData(Uri.parse("itheima:"+110));
//5.设置数据类型
//intent.setType("aa/bb");
//6.注意小细节 如果setdata方法和settype方法一起使用的时候 应该使用下面的方法
intent.setDataAndType(Uri.parse("itheima1:"+110), "aa/bb1");
//4.开启Activity
startActivity(intent);
}
[2]清单文件中配置如下:
<!-- 配置testActivity -->
<activity
android:name="com.itheima.newactivity.TestActivity"
android:icon="@drawable/head2"
android:label="我是第二个页面"
>
<intent-filter >
<action android:name="com.itheima.testactivity"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="aa/bb" android:scheme="itheima"/>
</intent-filter>
<intent-filter >
<action android:name="com.itheima.testactivity"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="aa/bb1" android:scheme="itheima1"/>
</intent-filter>
</activity>
<!-- 配置Activity3 -->
<activity android:name="com.itheima.newactivity.Test3Activity">
[3]TestActivity代码如下:
public class TestActivity extends Activity {
//当Activity启动
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//1.加载布局
setContentView(R.layout.activity_test);
//2.获取mainActivity传递过来的数据 getIntent()得到启动该activity的意图
Intent intent=getIntent();
//3.获取数据
Uri data = intent.getData();
String scheme = data.getScheme();
System.out.println("scheme:"+scheme);//scheme:itheima1
System.out.println("data:"+data);//data:itheima1:110 即schema+":"+传递的110
}
}
3.显式意图
定义:通过指定具体的包名和类名
//点击按钮 跳转到TestActivity
public void click3(View v){
//1.创建意图对象 意图就是我要完成一件事
Intent intent=new Intent(this, Test3Activity.class);
//2.设置包名和类名 packageName:当前应用的包名
//intent.setClassName("com.itheima.newactivity", "com.itheima.newactivity.Test3Activity");
//3.开启Activity
startActivity(intent);
}
总结:[1]开启自己应用的界面,用显式意图
[2]开启其他应用(系统应用)的时候用隐式意图 电话拨号器
[3]显式意图安全一些
4.人品计算器小案例
[1]画页面
___xxxx___ 张三
男 女 人妖 男
计算 您的人品非常好
[1.1]activity_main.xml代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.itheima.rpcalc.MainActivity"
tools:ignore="MergeRootFrame" >
<EditText
android:id="@+id/et_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入姓名" />
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/rb_male"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男" />
<RadioButton
android:id="@+id/rb_female"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="25dp"
android:text="女" />
<RadioButton
android:id="@+id/rb_other"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="25dp"
android:text="人妖" />
</RadioGroup>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="计算" />
</LinearLayout>
[1.2]activity_result代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/tv_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="张三"
/>
<TextView
android:id="@+id/tv_sex"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="男"
/>
<TextView
android:id="@+id/tv_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="您的人品非常好"
/>
</LinearLayout>
[2]实现mainActivity的逻辑,MainActivity代码如下:
//点击按钮 实现计算人品 跳转到ResultActivity页面
public void click(View v){
//1.获取用户名
String name = et_name.getText().toString().trim();
//2.判断一下name是否为空
if(TextUtils.isEmpty(name)){
Toast.makeText(getApplicationContext(), "亲 请输入姓名", 1).show();
return;
}
//3.判断用户选择的性别
int radioButtonId = rg_group.getCheckedRadioButtonId();
int sex=0;
switch (radioButtonId) {
case R.id.rb_male://代表选择的是男的
sex=1;
break;
case R.id.rb_female://代表选择的是女的
sex=2;
break;
case R.id.rb_other://代表选择的是人妖
sex=3;
break;
default:
break;
}
if(sex==0){
Toast.makeText(getApplicationContext(), "请选择性别", 1).show();
System.out.println("radioButtonId:"+radioButtonId);
return;
}
//4.跳转到ResultActivity页面 用显式意图跳转
Intent intent=new Intent(this,ResultActivity.class);
//传递姓名
intent.putExtra("name", name);
//传递性别
intent.putExtra("sex", sex);
startActivity(intent);
}
[3]跳转到结果页面逻辑ResultActivity代码如下:
//1.加载布局
setContentView(R.layout.activity_result);
TextView tv_name=(TextView) findViewById(R.id.tv_name);
TextView tv_sex=(TextView) findViewById(R.id.tv_sex);
TextView tv_result=(TextView) findViewById(R.id.tv_result);
//2.获取mainActivity传递过来的数据
Intent intent = getIntent();//获取开启此Activity的意图对象
//3.获取name和sex的值 小技巧:传递的是什么数据类型 这边就按照传递的数据类型获取
String name = intent.getStringExtra("name");
int sex = intent.getIntExtra("sex", 0);
//4.根据name和sex显示数据
tv_name.setText(name);
byte[] bytes=null;
//5.显示性别
try {
switch (sex) {
case 1:
tv_sex.setText("男");
bytes=name.getBytes("gbk");
break;
case 2:
tv_sex.setText("女");
bytes=name.getBytes("utf-8");
break;
case 3:
tv_sex.setText("人妖");
bytes=name.getBytes("iso-8859-1");
break;
default:
break;
}
} catch (Exception e) {
e.printStackTrace();
}
//6.计算人品结果 市面上大多数应用采用的是随机数
int total=0;
for (byte b:bytes) {
int number=b&0xff; //0001 1111
total+=number; //1111 1111
}
//获取得分
int score=Math.abs(total)%100;
if(score>90){
tv_result.setText("您的人品非常好,您家的祖坟都冒青烟了");
}else if(score>80){
tv_result.setText("您的人品非常还可以");
}else if(score>60){
tv_result.setText("您的人品非常刚及格");
}else{
tv_result.setText("您的人品太次了 您需要努力啊");
}
5.短信大全小案例
[1]MainActivity代码如下:
//String objects[]={...}
//1.找到 lv
ListView lv=(ListView) findViewById(R.id.lv);
//2.设置数据 先有数据
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, R.layout.item, objects);
//3.设置数据适配器
lv.setAdapter(adapter);
//4.给listview设置 点击事件 小技巧:
lv.setOnItemClickListener(new OnItemClickListener() {
//listview的一个条目被点击的时候调用
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
//5.把点击条目的数据取出来 掌握一条原则:数据在哪里存着呢 就去哪里取
String content=objects[position];
//6.跳转大盘发送短信页面
/**
* <intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
*/
Intent intent=new Intent();
//6.1设置action
intent.setAction("android.intent.action.SEND");
//6.2添加category
intent.addCategory("android.intent.category.DEFAULT");
//6.3设置type
intent.setType("text/plain");
//6.4传递数据
intent.putExtra("sms_body", content);
//7.跳转到发送短信页面
startActivity(intent);
}
});
[2]activity_main代码如下:
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent"
></ListView>
[3]item代码如下:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
6.短信发送器小案例
总结 1 2共同点 A界面 ---> B界面 然后把A界面的数据传递到B界面
A界面 ---> B界面 当B页面关闭的时候,把数据返回给A界面
[1]清单文件配置activiy,还配置权限:<uses-permission android:name="android.permission.SEND_SMS"/>
[2]activity_main代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.itheima.smsmanager.MainActivity"
android:orientation="vertical"
tools:ignore="MergeRootFrame">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/et_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入手机号码"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/et_number"
android:layout_alignParentRight="true"
android:onClick="add"
android:text="+"
/>
</RelativeLayout>
<EditText
android:id="@+id/et_content"
android:layout_width="match_parent"
android:layout_height="200dp"
android:gravity="top"
android:hint="请输入发送短信的内容"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="insertsms"
android:text="插入短信模板"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="send"
android:text="发送"
/>
</LinearLayout>
[3]activity_contact代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent"
></ListView>
</LinearLayout>
[4]contact_item代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/tv_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="aaa"
android:textSize="20sp"
/>
<TextView
android:id="@+id/tv_phone"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="1110"
android:textSize="20sp"
/>
</LinearLayout>
[5]activity_smstemplate代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/tv_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="aaa"
android:textSize="20sp"
/>
<TextView
android:id="@+id/tv_phone"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="1110"
android:textSize="20sp"
/>
</LinearLayout>
[6]smstemplate_item代码如下:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:text="TextView" />
[7]Person代码如下:
private String name;
private String phone;
...get/set...
[8]MainActivity代码如下:
private EditText et_content;
private EditText et_number;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//1.找到我们关心的控件
et_number = (EditText) findViewById(R.id.et_number);
et_content = (EditText) findViewById(R.id.et_content);
}
//点击按钮跳转到发送短信模板页面
public void insertsms(View v){
Intent intent=new Intent(this,SmsTemplateActivity.class );
startActivityForResult(intent, 2);
}
//点击按钮跳转到ContactActivity页面
public void add(View v){
Intent intent=new Intent(this, ContactActivity.class);
//startActivity(intent);
//小细节 如果点击按钮 开启了另外的Activity 并且当开启的这个Activity关闭的时候
//想要这个开启Activity的数据 用下面这个方法开启activity
startActivityForResult(intent, 1);
}
//当我们开启的Activity 页面关闭的时候 这个方法就调用
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==1){
//代表请求ContactActivity这个页面的数据
String phone=data.getStringExtra("phone");
et_number.setText(phone);
}else if(requestCode==2){
//代表请求 短信模板页面的数据
String smsContent = data.getStringExtra("smscontent");
et_content.setText(smsContent);
}
/*if(resultCode==10){
//代表请求ContactActivity这个页面的数据
String phone=data.getStringExtra("phone");
et_number.setText(phone);
}else if(resultCode==20){
//代表请求 短信模板页面的数据
String smsContent = data.getStringExtra("smscontent");
et_content.setText(smsContent);
}*/
super.onActivityResult(requestCode, resultCode, data);
}
//点击按钮 发送短信
public void send(View v){
//1.获取发送短信的号码和发送的内容
String number=et_number.getText().toString().trim();
String content=et_content.getText().toString().trim();
//2.获取到smsmanager的实例
SmsManager smsManager = SmsManager.getDefault();
//怕信息太多,切割
ArrayList<String> divideMessages = smsManager.divideMessage(content);
for (String div : divideMessages) {
/**
* destinationAddress 发给谁
* scAddress 服务中心号码
* text 要发送的内容
*
*/
smsManager.sendTextMessage(number, null, div, null, null);
System.out.println("给"+number+"发送短信:"+div);
}
}
[9]ContactActivity代码如下:
private List<Person> lists;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//加载布局
setContentView(R.layout.activity_contact);
//1.找到控件
ListView lv=(ListView) findViewById(R.id.lv);
//2.准备listview要显示的数据 模拟点假数据
lists = new ArrayList<Person>();
for (int i = 0; i < 20; i++) {
Person p=new Person();
p.setName("张三"+i);
p.setPhone("11"+i);
lists.add(p);
}
//3.展示数据
lv.setAdapter(new MyAdapter());
//4.给listview设置点击事件
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//5.获取点中条目的数据 数据在哪里存着呢 就去哪里取
String phone = lists.get(position).getPhone();
//5.0把数据返回给调用者
Intent intent=new Intent();
intent.putExtra("phone", phone);
//把结果返回给调用者
setResult(10, intent);
//5.1关闭当前页面
finish();
}
});
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
}
private class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
return lists.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
if(convertView==null){
view=View.inflate(getApplicationContext(), R.layout.contact_item, null);
}else{
view=convertView;
}
//1.找到我们在item中定义的控件 用来显示数据
TextView tv_name=(TextView) view.findViewById(R.id.tv_name);
TextView tv_phone=(TextView) view.findViewById(R.id.tv_phone);
//2.展示数据
tv_name.setText(lists.get(position).getName());
tv_phone.setText(lists.get(position).getPhone());
return view;
}
}
[10]SmsTemplateActivity代码如下:
String objects[] = {"我在吃饭,请稍后联系","我在开会,请稍后联系","我在上课,请稍后联系","我在打代码,请稍后联系","我在约会,请稍后联系"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_smstemplate);
//1.找到lv
ListView lv=(ListView) findViewById(R.id.lv);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.smstemplate_item, objects);
//2.显示数据
lv.setAdapter(adapter);
//3.设置lv的条目的点击事件
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//4.取出点击条目的数据
String smsContent=objects[position];
//5.把smsContent返回调用者
Intent intent=new Intent();
intent.putExtra("smscontent", smsContent);
setResult(20, intent);
//6.调用finish
finish();
}
});
}
7.Activity的生命周期
[1]onCreate方法
[2]onDestroy方法 当Activity销毁的时候调用
[3]onStart方法 当Activity界面变成可视的时候调用
[4]onStop方法 当Activity界面不可见
[5]onResume方法 界面有按钮可以被点击了 获取了焦点
[6]onPause方法 界面上按钮不可以被点击 失去焦点
[7]onRestart方法 界面重启启动
【实例】:(重点):(可以看Activity生命周期图,帮助记忆)
activity启动:onCreate-->onStart-->onResume
启动别的activity,导致被盖住:onPause-->onStop
返回到本activity:onRestart-->onStart-->onResume
ctrl+F11(横竖屏切换):onPause-->onStop-->onDestroy-->onCreate-->onStart-->onResume
启动透明应用activity:onPause
透明应用activity返回到本activity:onResume
返回(退出):onPause-->onStop-->onDestroy
8.横竖屏切换Activity的生命周期
ctrl+F11 进行横竖屏切换
activity配置:android:screenOrientation="portrait" 代表竖屏
activity配置:android:screenOrientation="landscape" 代表横屏
9.任务栈的概念(API Guides>Activities>Tasks and Back Stack)
栈:先进后出
队列:先进先出
task:什么叫任务
[1]打开一个Activity叫进栈 关闭一个Activity叫出栈
[2]我们操作的Activity永远是栈顶的Activity
[3]任务栈是用来维护用户操作体验的
[4]应用程序退出了是任务栈清空了
[5]一般情况一个应用程序对应一个任务栈
10.Activity的四种启动模式
standard(默认)启动模式:
不断创建Activity,进到任务栈
singletop启动模式:(即栈顶的activity不会再次创建自己并进栈)
singletop单一顶部模式,在activity的配置文件中设置android:launchMode="singleTop"。
如果任务栈的栈顶存在这个要开启的activity,不会重新创建activity,而是复用已经存在的activity.保证栈顶的activity如果存在,不会重复创建。
应用场景:浏览器的书签
singleTask启动模式:(查找任务栈有没有实例activity,有则将其位置当成栈顶,栈顶外的数据不要;无则创建,并将其activity放入栈顶)
singleTask单一任务栈,在当前任务栈里面只能有一个实例存在
当开启activity的时候,就去检查在任务栈里面是否有实例已经存在,如果有实例存在就复用这个已经存在的activity,并且把这个activity上面的所有别的activity都清空,复用这个已经存在的activity。保证整个任务栈里面只有一个实例存在
应用场景:浏览器的activity
如果一个activity的创建需要占用大量的系统资源(cpu,内存)一般配置这个activity为singleTask启动模式
singleInstance启动模式:(运行在自己的任务栈中并只有一个实例)
【例子(activity1是默认,activity2和activity3都是singleInstance):启动activity1-->activity2-->activity3-->activity1-->activity3;销毁顺序:activity3--》activity1--》activity1--》activity2】
singleInstance启动模式非常特殊,activity会运行在自己的任务栈里面,并且这个任务栈里面只有一个实例存在
如果你要保证一个activity在整个手机操作系统里面只有一个实例存在,使用singleInstance
应用场景:来电页面
11.今日总结
[1]如何创建新的Activity
[2]2种意图 显式 隐式
[3]界面之间传递数据 putExtra() 用map封装的
[4]开启Activity2种方式
[5]请求码和结果码
[6]关闭一个Activity finish();
[7]Activity的生命周期
[8]当横竖屏切换
[9]task
[10]四种启动模式
【注意】activity之间传递数据: [putExtra() 用map封装的]
[1]启动activity【startActivity/startActivityForResult】
intent.setData(Uri.parse("itheima:"+110))或者intent.setDataAndType(Uri.parse("itheima1:"+110), "aa/bb1"):设置data
intent.putExtra("name", name);
intent.putExtra("sex", sex);
startActivity(intent)或者startActivityForResult(intent, 请求码):启动对应的匹配intent-filter的activity.(如果有两个activity匹配,会出现选择(不好))
[2]被启动的activity【getIntent()】
getIntent()得到启动该activity的意图
intent.getData()得到传递的data数据
String name = intent.getStringExtra("name");
int sex = intent.getIntExtra("sex", 0);
[3]被启动的activity返回结果【setResult】
//把数据返回给调用者
Intent intent=new Intent();
intent.putExtra("phone", phone);
//把结果返回给调用者
setResult(10, intent);//结果码
//关闭当前页面
finish();
[4]启动activity:(能得到请求码和结果码还有意图)
//当我们开启的Activity 页面关闭的时候 这个方法就调用
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==1){
//代表请求ContactActivity这个页面的数据
String phone=data.getStringExtra("phone");
et_number.setText(phone);
}else if(requestCode==2){
//代表请求 短信模板页面的数据
String smsContent = data.getStringExtra("smscontent");
et_content.setText(smsContent);
}
/*if(resultCode==10){
//代表请求ContactActivity这个页面的数据
String phone=data.getStringExtra("phone");
et_number.setText(phone);
}else if(resultCode==20){
//代表请求 短信模板页面的数据
String smsContent = data.getStringExtra("smscontent");
et_content.setText(smsContent);
}*/
super.onActivityResult(requestCode, resultCode, data);
}
【注意】finish()关闭当前activity
【注意】透明应用:application配置 android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"。
可能会出异常:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.itheima.touming/com.itheima.touming.MainActivity}: java.lang.IllegalStateException:You need to use a Theme.AppCompat theme (or descendant) with this activity.
原因:mainactivity不能继承ActionBarActivity,要继承activity
【注意】SmsManager:
//获取到smsmanager的实例
SmsManager smsManager = SmsManager.getDefault();
//怕信息太多,切割
ArrayList<String> divideMessages = smsManager.divideMessage(content);
for (String div : divideMessages) {
/**
* destinationAddress 发给谁
* scAddress 服务中心号码
* text 要发送的内容
*
*/
smsManager.sendTextMessage(number, null, div, null, null);
System.out.println("给"+number+"发送短信:"+div);
}