Intent的概念及应用,以及Intentfilter过滤器的选项配置

Intent包括显示Intent和隐式Intent
手动创建一个Activity:
创建一个class继承于Activity,里面要重构一个onCreat()函数,

protected void onCreat(Bundle savedInstanceState){
              super.onCreat(savedInstanceState);
              setContentView(R.layout.xxx);//通过setContentView()绑定视图文件XML

}
之后在AndroidManifest.xml中的application中,添加以下语句:

<activity android:name=".xxx"
/>

startActivity(new Intent(MainActivity.this, xxx.class));//启动该Activity,这就是显式的Intent,指定了要执行的Activity为xxx

在隐式Intent中,
在AndroidManifest.xml中的application中,添加以下语句:

<activity
    android:name=".AnotherAty"
android:label="@string/title_activity_another_aty" >
<intent-filter>//过滤器
    <action android:name="com.xxx.project.intent.action.aty"/>//定义该Acitivity 的 name
    <category android:name="android.intent.category.DEFAULT"/>//指定它是一个Acitivity
</intent-filter>
</activity>
startActivity(new Intent(“com.xxx.project.intent.action.aty”));//启动该Activity,这就是隐式的Intent,指定了要执行的Activity为AnotherAty

com.xxx.project.intent.action.aty这个字符串还可以在Activity类的定义中,添加为常量字符串。
通过隐式的Intent可以在一个程序中,调用另一个APP的activity。
如果需要规定该ACTIVITY只能在同一个APP中被调用,则可以在manifest中的activity定义里添加:
android: exported = “false”;

intentfilter过滤器可以用于设置匹配信息,包括action,category,还有data.
category可以定义是否是Acitivity(

            <category
android:name="android.intent.category.DEFAULT"/>),

是否允许被浏览器访问调用(

<category android:name="android.intent.category.BROWSABLE"/>)

data可以定义协议Scheme/参数等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章