Android-启动Activity通过<data> path URI

在 Android 中使用 Intent 启动 Activity 时, category 不是必须的,但 data 是必须的。如果Intent中设置了data,则必须在 AndroidManifest.xml 中进行相应配置,否则启动会失败12。

Intent 与 清单文件 的匹配规则

Action和Category

Action:Intent中必须指定action,且intent中的action必须与intent-filter中的action完全一致(包括大小写)。如果intent中没有指定category,系统会自动添加android.intent.category.DEFAULT,如果没有这个category,匹配会失败2。

Category:intent-filter中可以有多条category,intent中也允许有多条category。所有intent中的category必须在intent-filter中找到对应的category才算匹配成功2。

Data

Data:intent中只能设置一个data,如果intent-filter中指定了data,则intent中也必须指定其中的一个data。setType会覆盖setData,反之亦然,因此需要使用setDataAndType方法来同时设置data和mimeType23。

示例代码

java

Intent intent = new Intent();

intent.setAction("com.action.456");

intent.addCategory("android.intent.category.DEFAULT"); // 即使代码里不写,系统也会默认添加

intent.setData(Uri.parse("http://456"));

startActivity(intent);

xml

<activity android:name=".SecondActivity">

    <intent-filter>

        <action android:name="com.action.123" />

        <action android:name="com.action.456" />

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

        <data android:host="456" android:scheme="http" />

    </intent-filter>

</activity>

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容