Intent--显示意图和隐式意图

一:显示意图

显式意图:调用Intent.setComponent()或Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。

例如通过意图跳转到另一个Activity的两种方式:

1:第一种方式跳转的显式意图

[java]  view plain  copy
  1. Intent intent = new Intent();  
  2. intent.setClassName("待启动Activity的包名","待启动Activity的完整类路径")//包名getPackageName()  
  3. intent.putExtra("name",name);//通过意图传递数据  
  4. startActivity(intent);//跳转到另一个Activity  

2:第二种方式跳转的显式意图

[java]  view plain  copy
  1. Intent intent = new Intent(context,AnotherActivity.class);//第二个参数是待启动Activity的类的反射  
  2. intent.putExtra("name",name);//可通过意图向另一个Activity传递数据  
  3. startActivity(intent);//跳转到另一个Activity  

另一个Activity中:

[java]  view plain  copy
  1. Intent intent1=getIntent();//获取传递过来的意图  
  2. intent.getStringExtra("name");//获取前一个Activity传递过来的数据  

二:隐式意图

隐式意图:没有明确指定组件名的Intent为隐式意图。 Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。

例如给某个Activity定义隐式意图:在清单文件中的该Activity标签中创建意图过滤器:

[html]  view plain  copy
  1. <intent-filter>  
  2.    <action android:name="android.intent.yinsiyitu.action"/>  
  3.    <category android:name="android.intent.category.DEFAULT"/>  
  4.    <data android:mimeType="application/person"/>  
  5.    <data android:scheme="jianren" android:host="www.ggl.com"/>  
  6. </intent-filter>  

另一个Activity通过上面的Activity定义的意图过滤器访问上面的Activity:

[java]  view plain  copy
  1. Intent intent = new Intent();  
  2. intent.setAction("android:intent.yinsiyitu.action");  
  3. intent.addCategory(Intent.CATEGORY_DEFAULT);  
  4. //intent.setData(Uri.parse(jianren://www.ggl.com));//会清除前面所有set的type  
  5. //intent.setType("application/person");//会清除前面所有的set的data  
  6. //这是setData和setType两全的方法,另外如果上面的Activity定义了host,则这里一定也要指定  
  7. intent.setDataAndType(Uri.parse("jianren://www.ggl.com"),"application/person");  
  8. //如果上面的Activity没有定义host,则Uri.parse("jianren:");至少要写到冒号,不可以只写Uri.parse("jianren")  
  9. startActivity(intent);  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值