Android 隐式调用详解(Action)

要通过Action调用某个Activity代码如下:

        //隐式调用代码片段
        Intent intent=new Intent();
        intent.setAction("com.ex.wy");
        startActivity(intent);

*如果这个手机中都找不到这个Action就会报错

xml中代码
下面的
<category android:name="android.intent.category.DEFAULT" />
必须加上因为在你 startActivity(intent);时系统已经默认加上这个category了
so,为了你的Activity能够隐试调用必须加

 <activity android:name=".IntentActivity">
            <intent-filter>
                <action android:name="com.ex.wy" />
                <action android:name="com.ex.wy2" />
                `
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>

Action的匹配规则

<action android:name="com.ex.wy" />
<action android:name="com.ex.wy2" />

我这里写了两个Action但是我的Intent中只是添加了一个Action
依然可以照常调用

但是如果我Intent中的Action有两个而且我另一个Activity加上一个Action呢
程序会调用哪个?

Intent intent=new Intent();
        intent.setAction("com.ex.wy");
          intent.setAction("com.ex.wy3");
        startActivity(intent);
 <activity android:name=".IntentActivity2">
            <intent-filter>
                <action android:name="com.ex.wy" />

                `
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
 <activity android:name=".IntentActivity">
            <intent-filter>
                <action android:name="com.ex.wy" />
                <action android:name="com.ex.wy2" />
                `
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>

实验结果:程序只会调用一个最符合的(IntentActivity)

如果我Intent只有一个Action呢,但是两个activity都有这个action
这种我们经常遇到,比如打开一个文件系统会让你选择用什么程序打开
so,系统会让你选择

第三种情况

Intent intent=new Intent();
        intent.setAction("com.ex.wy");
          intent.setAction("com.ex.wy3");
        startActivity(intent);
 <activity android:name=".IntentActivity2">
            <intent-filter>
                <action android:name="com.ex.wy" />

                `
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
 <activity android:name=".IntentActivity">
            <intent-filter>

                <action android:name="com.ex.wy3" />
                `
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>

这种很奇葩 这个Intent中的Action有两个但是每个Activity只有一个符合
程序只会选择最后面那个
intent.setAction("com.ex.wy3");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值