AndroidManifest.xml内如下设置
<!-- 首页 -->
<activity
android:name=".MainActivity"
android:label="XXX"
android:roundIcon="@mipmap/ic_launcher">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="view" />
</intent-filter>
</activity>
代码中设定其他活动使用隐式跳转
intent = new Intent("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");
getContext().startActivity(intent);
的方式往该活动跳转时,弹出一个选择打开app的界面,而且该活动不能正常显示,使用显示跳转
intent = new Intent(((Activity)getContext()), MainActivity.class);
getContext().startActivity(intent);
就可以了,是什么原因导致的呢?在网上查了一些资料也没找到相关的说明。
20170922更新
参照luoxieting的回答修改代码
AndroidManifest.xml如下
<activity
android:name=".MainActivity"
android:label="XXX"
android:roundIcon="@mipmap/ic_launcher">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="toMainActivity" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="view" />
</intent-filter>
</activity>
程序中隐式跳转依然不起作用并且报错,继续查找原因
在这个地址发现了这么一句话
匹配规则中必须添加“android.intent.category.DEFAULT”这个过滤条件;
于是再次修改代码
<activity
android:name=".MainActivity"
android:label="XXX"
android:roundIcon="@mipmap/ic_launcher">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="toMainActivity" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="view" />
</intent-filter>
</activity>
测试跳转成功。
<category android:name="android.intent.category.LAUNCHER" />
上面代码代表的意思是桌面是否显示图标,如果没有这行代码,手机页面就看不到该应用的图标了,很多插件就是这样做的。
每一个有图标的应用都有这个category,所以当你那样写时,它分辨不出你要往哪个应用的category跳转,所以让你选择应用。
我一般是定义一个唯一的action,然后使用action来作为隐式跳转。
<activity