Intent 隐式跳转 你可能忽略的细节 xx

Intent跳转,想毕每个android人都经常使用,
相对于隐式跳转,其实我们用的更多的是显示跳转(其实一般我们跳转android内置应用全是隐式跳转):

Intent intent=new Intent(MainActivity.this, SecondActivity.class);   
startActivity(intent);  

而对于隐式跳转,大家也是能随意的说出,不就是配置一个意图过滤器吗, 有什么难的0.0

确实并不难,这个小小的细节,估摸很多人都遇到过,然后由于并不是常用,所以可能就忘记了
在此保存下来,以防哥哥姐姐们因为项目压力而慌不择路,无从下手 xixi

//清单文件如此配置? 
 <activity android:name=".xxxxActivity">
            <intent-filter>
                <action android:name=".xxxxActivity" />
                <category android:name="cxxxtion.ABC" />
            </intent-filter>
        </activity>

//隐式跳转代码如下:
  Intent intent = new Intent(".SecondActivity");
                intent.addCategory("com.zz.myapplication.ABC");
                startActivity(intent);


//别着急复制,是有问题的.......

然后神奇的结果 程序崩溃, 报错信息如下:
Intent 隐式跳转 你可能忽略的细节 xx_第1张图片
也许就算项目压力,出于经验,大家还是快速的从错误中发现,
报错说 No Activity found to handle Intent { act=.SecondActivity cat=[com.zz.myapplication.ABC] }
赶快比对一下 咱的 action 和 category 是不是写错了 …
然后多次比对后, 发现 action 和 category 并没用写错

内心飙戏:
what , android 你特么个坑B 怎么回事 这特么都匹配不到, 是不是神奇的缓存问题, 于是卸载应用 重启studio 可是问题依然…
Intent 隐式跳转 你可能忽略的细节 xx_第2张图片
莫慌,莫慌, 这就是我写下blog的原因,由于赶项目,心里都是焦躁不安的,遇到简单问题,还无法快速解决的心理,简直就要炸了天!!!

以下是正确写法:

//清单文件配置
<activity android:name=".SecondActivity">
            <intent-filter>
                <action android:name=".SecondActivity" />
                <category android:name="android.intent.category.DEFAULT" />  //没错就是我 zzz  
                <category android:name="com.zz.myapplication.ABC" />
            </intent-filter>
        </activity>

//跳转代码
Intent intent = new Intent(".SecondActivity");
				//即使没有addCategory ->default  也必须在清单文件中配置 
				//   
                intent.addCategory("com.zz.myapplication.ABC"); 
                startActivity(intent);

你可能感兴趣的:(Intent 隐式跳转 你可能忽略的细节 xx)