显式访问activity只要在Intent的构造方法里指定activity的类名,比较直观,容易理解,而且显式方式一般用于打开同一个应用中的其它activity窗口。
java代码如下
java代码如下
Intent intent = new Intent(this,MyActivity.class);
startActivity(intent);
通过显式方式也能跨应用访问activity,只要知道另一个应用Package Name和想访问的activity的类名就行,因为每一个android应用的唯一标识就是Package Name ,也就是AndroidManifest.xml里<manifest>标签的package的属性值。具体方法可以参照李宁老师的《android权威开发指南(第二版)》第六章
隐式访问activity就是通过给定的action和category和data来查找符合过滤要求的activity,如果找不到,则会抛异常
其实就是在项目的AndroidManifest.xml文件中给想访问的activity加上一个或者多个过滤器,每一个<intent-filter></intent-filter>标签就是一个过滤器,在标签里定义好过滤规则。其中<action>标签是必须的,<action>标签可以是一个或者多个;<category>标签也可以是多个,不过如果不指定其它的category一般加上默认的category,就是
<category android:name="android.intent.category.DEFAULT" />
<data>标签是可选的。
例子如下,这里的过滤器只是指定了<action>再加上默认的<category>而已
<activity
android:name="com.atggdsai.testintent.MainActivity2"
android:label="@string/title_activity_main_activity2" >
<intent-filter>
<action android:name="android.intent.action.MYACTION" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Intent intent = new Intent("android.intent.action.MYACTION");
startActivity(intent);
如果过滤器中只是指定了默认的category则在java代码中可以不用调用intent.addCategory()方法