Intent

显式intent

从一个activity启动另一个activity时,我们通常采用

startActivity(new Intent(MainActivity.this,AnotherActivity.class));

第一个参数说明当前activity,第二个参数说明将要启动的acticity的类。这种方式就称为显示intent,因为它直接指明了被启动的类的定义。

隐式intent

在AndroidManifest.xml文件中,我们给AnotherActivity添加一个action,里面可以输入任何字符串。在MainActivity里调用时,intent的参数只需要传入这个字符串既可以。

<activity android:name=".AnotherActivity">
    <intent-filter>
        <category android:name="android.intent.category.DEFAULT" />
        <action android:name="absdasjdlkandklwnkwladn" />
    </intent-filter>
</activity>
startActivity(new Intent("absdasjdlkandklwnkwladn"));

这就是隐式intent,它的好处是,我们在A应用里面要启动B应用的一个activity时,我们是无法获得B应用里类的定义的,而此时采用隐式intent就能做到。如果想不允许一个activity被其他应用启动,可以在这个activity添加一个属性exported,设置为false即可。

intent过滤器

当一个action绑定了多个activity,这个action被执行时,它会弹出选项,让你选择启动哪个avtivity。
或者,我们可以在intent-filter里添加data字段,来特定的选择某个acticity。

<activity android:name=".AnotherActivity">
    <intent-filter>
        <category android:name="android.intent.category.DEFAULT"></category>
        <action android:name="absdasjdlkandklwnkwladn"></action>
        <data android:scheme="app"></data>
    </intent-filter>
</activity>
startActivity(new Intent("absdasjdlkandklwnkwladn", Uri.parse("app://hello"));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值