基础知识记录:intent解析

intent:Intent是系统各组件之间进行数据传递的数据负载者。当我们需要做一个调用动作,我们就可以通过Intent告诉Android系统来完成这个过程,Intent就是调用通知的一种操作。

Intent有几个重要的属性,下面我们将会逐一介绍:

1.action,要执行的动作

    public void gotoTargetActivity(View view) {  
        Intent intent = new Intent();  
        intent.setAction("android.intent.action.VIEW");
        startActivity(intent);  
    }  

2.data和extras,即执行动作要操作的数据和传递到目标的附加信息

/** 
 * 打开指定网页 
 * @param view 
 */  
public void invokeWebBrowser(View view) {  
    Intent intent = new Intent(Intent.ACTION_VIEW);  
    intent.setData(Uri.parse("http://www.google.com.hk"));  
    startActivity(intent);  
}  

/** 
 * 进行关键字搜索 
 * @param view 
 */  
public void invokeWebSearch(View view) {  
    Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);  
    intent.putExtra(SearchManager.QUERY, "android");    //关键字  
    startActivity(intent);  

其中可对data进行自定义:

在目标<data/>标签中包含了以下几种子元素,他们定义了url的匹配规则:

android:scheme 匹配url中的前缀,除了“http”、“https”、“tel”…之外,我们可以定义自己的前缀
android:host 匹配url中的主机名部分,如“google.com”,如果定义为“*”则表示任意主机名
android:port 匹配url中的端口
android:path 匹配url中的路径
android:pathPrefix,表示路径前缀。

  <data android:scheme="scott" android:host="com.ssss.intent.data" android:port="7788" android:path="/target"/> 

当使用extras进行数据传输,其中还涉及到了Bundle对象。创建一个Bundle实例,然后将具体的参数信息放置到Bundle实例中,然后intent指定这个Bundle对象。

    public void gotoTargetActivity(View view) {  
        Intent intent = new Intent("com.ssss.intent.action.TARGET");  
        Bundle bundle = new Bundle();  
        bundle.putInt("id", 0);  
        bundle.putString("name", "ssss");  
        intent.putExtras(bundle);  
        startActivity(intent);  
    }  

然后再使用intent获取到Bundle对象,取出对象中的数据。

Bundle bundle = intent.getExtras();  
int id = bundle.getInt("id");  
String name = bundle.getString("name"); 

3.category,要执行动作的目标所具有的特质或行为归类

4.type:要执行动作的目标Activity所能处理的MIME数据类型

<data android:mimeType="image/*" /> //图片

5.component,目标组件的包或类名称
可进行app内部,也可以再app之间进行intent跳转与传输数据。
需要注意的是,如果我们在Intent中指定了component属性,系统将不会再对action、data/type、category进行匹配。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值