[android] 隐式意图和显式意图的使用场景
激活系统的某些应用,并且往应用里面填一些数据,比如说短信应用
打开短信应用,查看logcat,找到ActivityManager,
看到Display.com.android.mms/.ui.ComposeMessageActivity
查看短信源代码的清单文件,可以看到,一个activity节点下面可以有多个intent-filter,一个意图过滤器里面可以设置多个action,category,data满足一个就可以。
测试一下,
获取Intent对象,new出来
调用Intent对象的setAction()方法,参数:”android.intent.action.SENDTO”
调用Intent对象的addCategory()方法,参数:”android.intent.category.DEFAULT”
调用Intent对象的setData()方法,参数:Uri对象,例如:Uri.parse(”sms:110”)
因此可以明白前面拨打电话部分的写法了
区别:
显式意图:同一个应用程序里面,自己激活自己,推荐使用,指定包名类名
隐式意图:不同的应用程序里面,激活别人的程序,或者被别人激活,推荐使用
隐式意图会查询系统里面的所有activity,如果有符合条件的就会直接启动,如果没有会报错,activity not found,执行效率比较低
//激活短信 public void click4(View v){ Intent intent=new Intent(); intent.setAction("android.intent.action.SENDTO"); intent.addCategory("android.intent.category.DEFAULT"); intent.setData(Uri.parse("sms:110")); startActivity(intent); }
十年开发经验程序员,离职全心创业中,历时三年开发出的产品《唯一客服系统》
一款基于Golang+Vue开发的在线客服系统,软件著作权编号:2021SR1462600。一套可私有化部署的网站在线客服系统,编译后的二进制文件可直接使用无需搭开发环境,下载zip解压即可,仅依赖MySQL数据库,是一个开箱即用的全渠道在线客服系统,致力于帮助广大开发者/公司快速部署整合私有化客服功能。
开源地址:唯一客服(开源学习版)
官网地址:唯一客服官网