1.Activity简介(★★)
Activity是Android
四大组件之一,它用于展示界面。Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务。Activity中所有操作都与用户密切相关,是一个负责与用户交互的组件,可以通过
setContentView(View)来显示指定控件。在一个android 应用中,一个
Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。Activity之间通过Intent进行通信。
2.Activity之间的跳转(★★★★)
Activity之间的跳转分为2种:
(1)显式跳转:在可以引用到那个类,
并且可以引用到那个类的字节码时可以使用。一般用于自己程序的内部。显式跳转不可以跳转到其他程序的页面中。
(2)隐式跳转:可以在当前程序跳转到另一个程序的页面。隐式跳转不需要引用到那个类,但是必须得知道那个界面的动作(action)和信息(category)。
Activity之间通过Intent进行通信。Intent即意图,用于描述一个页面的信息,同时也是一个数据的载体。
案例-显式跳转:显式跳转必须知道并且能够使用要跳转的Activity的字节码,所以显式跳转一般只能用于自己程序的内部的跳转,而不能跳转到其他程序的Activity。
Tips:为了方便演示,我们创建一个新的
Android 工程《Activity 跳转》。然后创建两个Activity
类,分别为FirstActivity,和SecondActivity,并在Android
工程清单文件
中声明这两个Activity类。工程清单中添加Activity配置如下。


<activity
android:name="com.itheima.activitySkip.FirstActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.itheima.activitySkip.SecondActivity"/>添加activity到清单文件中
修改 FirstActivity 布局文件(activity_first.xml),并将该布局文件复制并修改名字为
activity_second.xml作为SecondActivity的布局文件。


1 <LinearLayout
2 xmlns:android=http:///apk/res/android
3 xmlns:tools=http:///tools
4 android:layout_width="match_parent"
5 android:layout_height="match_parent"
6 android:orientation="vertical"
7 tools:context=".FirstActivity" >
8 <TextView
9 android:layout_gravity="center_horizontal"
10 android:layout_width="wrap_content"
11 android:layout_height="wrap_content"
12 android:textColor="#ff0000"
13 android:text=" 我是第一个 Activity" />
14 <Button
15 android:layout_width="wrap_content"
16 android:layout_height="wrap_content"
17 android:text=" 跳转到第二个 Activity"
18 android:onClick="skip2Second" />
19 </LinearLayout>activity_second.xml
2.1 显式跳转
编写FirstActivity类:


package com.itheima.activitySkip;
import .Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class FirstActivity extends Activity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
}
public void skip2Second(View view){
//创建一个 Intent 对象,并传递当前对象(Context 对象)和要跳转的 Activity 类字节码
Intent intent = new Intent(this, SecondActivity.class);
//启动第二个 Activity
startActivity(intent);
}
}FirstActivity
运行上面的工程,点击按钮,发现成功跳转到了第二个 Activity页面。
2.2 隐式跳转
隐式跳转可以跳转到其他程序的
Activity,只要知道Activity的动作(action)以及信息(category)。因此,能够被隐式跳转的Activity,在清单文件中声明时必须指定动作和信息这两个属性。
(1)修改工程清单文件中SecondActivity的配置信息。


<activity android:name="com.itheima.activitySkip.SecondActivity">
<!-- 配置意图过滤器 –>
<intent-filter >
<!-- 在意图过滤器中设置 action 和 category,当有匹配的 action 和 category 的时候启动该 Activity。这里使用 Android 提供的默认 category 即可 –>
<action android:name="com.itheima.activitySkip.SecondActivity"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>在清单文件中配置隐式意图
(2)修改在2.1章节中FirstActivity类


//创建一个 Intent 对象
Intent intent = new Intent();
//设置 Action intent.setAction("com.itheima.activitySkip.SecondActivity");
//对于 android.intent.category.DEFAULT 类型的信息为 Android 系统 默认的信息,省略也可以
intent.addCategory("android.intent.category.DEFAULT");
//启动 Activity startActivity(intent);隐式意图的跳转意图
执行上面的代码,发现实现了Activity的跳转。
Tips:若清单文件中的Activity声明为:


<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>将Activity作为程序入口的意图过滤器
则此Activity将作为程序的入口,有几个作为入口的Activity,apk文件安装的时候就会生成几个图标。
3.案例-Activity隐式跳转(★★★)
Android 系统中本身存在很多的应用程序,打开系统源码,查看
packages
文件夹下
的apps文件夹,里面存放着Android系统的这些应用程序。
若想跳转到这些应用程序中,只需打开对应应用程序的清单文件,找到其动作和信息,
采用隐式跳转即可实现。
3.1 打开浏览器界面
自己将Android
应用的源码安装在:D:\AndroidSource_GB\AndroidSource_GB 中,
打开
D:\AndroidSource_GB\AndroidSource_GB\packages\apps\Browser
目录,然后
打开AndroidManifest.xml清单文件,找到用于启动浏览器的intent-filter。
Tips:intent-filter有多个,我们选择一个适合我们即可。


<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:scheme="about" />
<data android:scheme="javascript" />
</intent-filter>启动浏览器需要添加的意图过滤器
注意:为了方便演示我们直接修改本文档2.1 章节中创建的工程,在FirstActivity的
布局文件中添加一个按钮,点击该按钮打开一个浏览器。这里给出 FirstActivity
类核心方
法的代码清单:


//跳转到浏览器界面
public void skip2Browser(View view){
//创建一个 Intent 对象
Intent intent = new Intent();
//设置 Action
intent.setAction("android.intent.action.VIEW");
//设置 category
intent.addCategory("android.intent.category.BROWSABLE");
//设置参数
intent.setData(Uri.parse("http://www.itheima.com"));
//启动 Activity
startActivity(intent);
}跳转到浏览器界面
运行上面代码,发现成功跳转到了浏览器界面,并打开了指定的网页。
3.2
打开短信发送界面
打开Android应用源码,找到
D:\AndroidSource_GB\AndroidSource_GB\packages\apps\Mms目录,打开
AndroidManifest.xml清单文件,找到intent-filter。


<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.SENDTO" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="sms" />
<data android:scheme="smsto" />
</intent-filter>系统上层源码中发送短信的意图过滤器
在本文档2.1 章节中给FirstActivity布局文件添加一个按钮,并添加按钮事件。在该方法中实现核心业务逻辑。


//跳转到发送短信界面
public void skip2Mms(View view){
//创建一个 Intent 对象
Intent intent = new Intent();
//设置 Action
intent.setAction("android.intent.action.VIEW");
//设置 category
intent.addCategory("android.intent.category.BROWSABLE");
//设置参数
intent.setData(Uri.parse("sms:10086"));
//设置短信内容
intent.putExtra("sms_body", "301");
//启动 Activity
startActivity(intent);
}跳转到系统的发送短信界面
















