Intent启动Activity的方式有显示启动(Explicit Intents),隐式启动(Implicit Intents)。
显示启动:
Intent intent=new Intent(MainActivity.this,OtherActivity.class);
startActivity(intent);
隐式启动:
首先在AndroidManifest.xml文件中OtherActivity部分添加intent-filter
<activity android:name=".OtherAcivity">
<intent-filter>
<action android:name="com.example.intentdemo.ACTION_START"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
在MainActivity中:
Intent intent=new Intent("com.example.intentdemo.ACTION_START");
startActivity(intent);
//因为"android.intent.category.DEFAULT"是一种默认的category,在调用startActivity时会自动将这个category添加到Intent中
(三)、Intent拓展部分:
启动一个系统的浏览器
<activity android:name=".OtherAcivity">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="http"
</intent-filter>
</activity>
在MainActivity中:
Intent intent=new Intent("android.intent.action.VIEW");
intent.setData(Uri.parse("http://www.baitu.com"));
startActivity(intent);
上述的data标签用于精确的指定当前活动响应的数据类型。此标签可以配置以下内容:
1.android:scheme 指定数据的协议部分,比如http
2.android:host 指定数据的主机部分 ,比如上述的www.baitu.com
3.android:port 指定数据的端口部分,一般在主机之后
4.android:path 指定主机名和端口之后的部分
5.android:mimeType 用于指定处理的数据类型,允许使用通配符方式指定
(四)、Intent传递数据(对象)
intent.putExtra(key,value)可用于传递附加的数据,本文中讲述intent传递对象
使用Intent传递对象通常有两种实现方式:Serializable,Parcelable
Serializable方式:
1.在对象的类(比如Person类)中实现Serializable接口
2.
Intent intent=new Intent(MainActivity.this,OtherActivity.class);
intent.putExtra("Person",person);
startActivity(intent);
3.在OtherActivity中获取对象
Person person=(Person)getIntent().getSerializableExtra("Person");