intent-filter详解
发布日期:2021-06-30 11:23:12
浏览次数:2
分类:技术文章
本文共 3150 字,大约阅读时间需要 10 分钟。
main.xml如下:
another.xml如下:
MainActivity如下:
package cn.com.bravesoft.testactivity4;import android.net.Uri;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;/*** 利用隐式意图激活组件的测试笔记* 在利用隐式意图激活组件时常用action category data进行匹配* 测试1:* 代码中设置为:* Intent intent = new Intent();* intent.setAction("cn.com.bravesoft.testAction");* startActivity(intent);* Manifest文件中设置:** * 结果:* 报错,无法激活组件* 原因:* 在intent设置action的时候会默认给改intent设置一个默认的category即* 相当于会自动执行:intent.addCategory("android.intent.category.DEFAULT");* 解决:* 在* 中设置category即* 均为设置data的情况下* 只要代码中intent的action和category均出现在了那么就* 可以激活组件* * 测试2:* 关于data的匹配测试* 在测试1中可以看到如果我们在代码中没有设置category那么系统会自动添加一个* 默认category即android.intent.category.DEFAULT.* 但是如果在意图对象或manifest中设置了data而另一方没有设置data,那么无论如何是不能匹配的* 关于该点不再单独测试* 关于数据的匹配常用到scheme host path* 比如在http://www.bravesoft.com.cn/android中* scheme是http* host是www.bravesoft.com.cn* path是/android* 此时代码如下:* Intent intent = new Intent();* intent.setAction("cn.com.bravesoft.testAction");* intent.setData(Uri.parse("http://www.bravesoft.com.cn/android"));* startActivity(intent);* manifest的* 这样就可以匹配到* 总结:* 在代码中的intent和manifest中的 如下:* 添加了mimeType即* 为了匹配该意图所以在代码中设置了intent.setType("image/gif");* 此时代码如下:* Intent intent = new Intent();* intent.setAction("cn.com.bravesoft.testAction");* intent.setData(Uri.parse("http://www.bravesoft.com.cn/android"));* intent.setType("image/gif");* * manifest的* * 此时可以匹配的* * 测试3:* 在测试2的基础上继续测试* 关于数据的匹配除了常用到scheme host path,有时还会采用mimeType* 为* * * 如下:* 除了设置scheme host path外还* 设置了mimeType时在代码中需要intent.setDataAndType将这些必须的* 东西同时设置.* 此时代码如下:* Intent intent = new Intent();* intent.setAction("cn.com.bravesoft.testAction");* intent.setDataAndType(Uri.parse("http://www.bravesoft.com.cn/android"), "image/gif");* startActivity(intent);* manifest的* * 结果:* 无法匹配* 原因:* 在调用setType的时候会自动清除setData所设置的内容,即setData失效* 解决:* 当manifest中的* * * * 如下:* * */public class MainActivity extends Activity { private Button mButton; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mButton = (Button) findViewById(R.id.button); mButton.setOnClickListener(new ButtonOnClickListener()); } private class ButtonOnClickListener implements OnClickListener { public void onClick(View v) { Intent intent = new Intent(); intent.setAction("cn.com.bravesoft.testAction"); intent.setDataAndType(Uri.parse("http://www.bravesoft.com.cn/android"), "image/gif"); startActivity(intent); } } }* * * *
AnotherActivity如下:
package cn.com.bravesoft.testactivity4;import android.app.Activity;import android.os.Bundle;public class AnotherActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.another); } }
AndroidManifest如下:
转载地址:https://it9527.blog.csdn.net/article/details/8946472 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月16日 06时06分47秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
swap内存(linux)
2019-04-30
人脸au
2019-04-30
torch.distributed 分布式
2019-04-30
OpenMP编程模型(OMP)
2019-04-30
混合精度训练(FP16 & FP32)
2019-04-30
PyPy
2019-04-30
打印CSDN文章
2019-04-30
MATLAB与CUDA
2019-04-30
Linux png转jpg (convert命令)
2019-04-30
NAS (Network Attached Storage 网络附属存储)
2019-04-30
Ubuntu更新后终端中字体的颜色全是白色
2019-04-30
Ninja
2019-04-30
lmdb数据库的读取与转换(一) —— 基本操作
2019-04-30
opencv相关操作(cv2) (python)
2019-04-30
lmdb数据库的读取与转换(二) —— 数据集操作
2019-04-30
Lua语言
2019-04-30
Python __doc__获得模块的文档字符串内容
2019-04-30
Python sys.path和模块搜索路径
2019-04-30
github.io网页无法打开(连接不是私密连接)
2019-04-30