基础知识记录:intent解析

来源:互联网 发布:2016qq悄悄话破解软件 编辑:程序博客网 时间:2024/06/05 11:52

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进行匹配。

原创粉丝点击