当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

android意图和意图监听器技术

发表于: 2015-01-06   作者:百合不是茶   来源:转载   浏览:
摘要: Intent是在activity之间传递数据;Intent的传递分为显示传递和隐式传递   显式意图:调用Intent.setComponent() 或 Intent.setClassName() 或 Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。   隐式意图;不指明调用的名称,根据设

Intent是在activity之间传递数据;Intent的传递分为显示传递和隐式传递

 

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

 

隐式意图;不指明调用的名称,根据设置的action,data,category,Android系统会根据这三个特征找到最合适的组件并激活

 

  显示意图;

 

1,界面意图的创建与启动  (调用系统的打电话的函数   ,str是需要获取的号码)

                 Intent intent =new Intent();//创建意图对象
		intent.setAction(Intent.ACTION_CALL);//设置系统动作
		intent.setData(Uri.parse("tel:"+str));//设置数据的来源
		startActivity(intent);//启动意图

 

 

 

2,界面之间的数据传递;

   

  //传递数据

 

//界面之间的跳转信息的传递
Intent intent = new Intent();
//将ip和端口传递到功能界面
intent.putExtra("ips", ips);
  intent.putExtra("ports", ports);
intent.setClass(MainActivity.this, LightUI.class);//将获取到的数据传递到LighUI类中来获取
startActivity(intent);

    

 

//获取传递的数据

 

// 获得intent的iP和ports
		Intent intent = getIntent();//创建获取显示意图的对象
		String ip = intent.getStringExtra("ips"); //获取数据
		String ports = intent.getStringExtra("ports");

 

 

 

3,使用包管理器启动意图

 

//使用包管理器测试
		Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+str));
       //包管理器
		PackageManager pm=this.getPackageManager();
		//判断是否存在
       ComponentName cm=intent.resolveActivity(pm);
       if(cm!=null){
    	   this.startActivity(intent);
       }else{
    	  Toast.makeText(this, "请安装应用程序..", Toast.LENGTH_SHORT).show(); 
       }	

 

 

 

 

隐式意图

    

  实现多个数据的返回;

onActivityResult() 方法

   

//监听器
	public void onchange(View v){
		//带返回值的意图
        Intent intent =new Intent();
        intent.setClass(this, SecondActivity.class);
        //使用带返回值的方法启动意图
        this.startActivityForResult(intent, REQUEST_CODE);
	}
	
	//接收意图的返回值
	/**requestCode请求码
	 * resultCode结果码
	 * data获取到的数据
	 * 
	 */
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		if(requestCode==REQUEST_CODE&&resultCode==RESULT_CODE){
			//获取SecondActivity界面传递的值 
			String num=data.getStringExtra("num");
			text.setText(num);
		}
		
	}

  

 

返回数据的activity页面 

  

	//添加按钮的监听器
	public void chan(View v){
		String num="10086";
		// 包装要返回的数据
		Intent intent = new Intent();
		intent.putExtra("num", num);
		this.setResult(MainActivity.RESULT_CODE,intent);
		this.finish();
	}

 

 

 

 

自定义意图监听器

intent.setAction(Intent.ACTION_CALL);//设置系统动作

intent.setData(Uri.parse(tel:str));    tel:可以拨打电话的原因; 

 

系统在创建意图时,配置了意图监听器;我们自己也可以实现意图监听器 ;例子如下;

 

意图监听器的配置xml页面; 

 

 <activity 
            android:name=".SecondActivity"> 将SecondActivity自定义意图监听器
            <intent-filter>
                <action android:name="com.newer.baihe"/>  action的名字
                
               <category android:name="android.intent.category.DEFAULT" />系统默认的类别,必须要写
          自定义三个类别,可以直接访问其中的一个
               <category android:name="com.baihe.aaa" /> 
               <category android:name="com.baihe.bbb" />
               <category android:name="com.baihe.ccc" />
                  
          
               <data 
                 数据的访问协议
                   android:scheme="baihe"  相当于 tel:
                   android:host="baidu.com"   主机
                   android:path="/index.html" 路径
                   android:mimeType="text/*" 匹配多个
                   />
            </intent-filter>
            </activity> 

 

 

java代码访问上面自定义的意图监听器

 

// 带返回值的意图
		Intent intent = new Intent();
		intent.setAction("com.newer.baihe");// 访问自定义的action
		intent.addCategory("com.baihe.aaa");// 访问类别
		intent.setDataAndType(Uri.parse("baihe://baidu.com/index.html"),
				"text/html");// 访问页面
		startActivity(intent);// 启动意图

 

 

 

 

   

 

 

android意图和意图监听器技术

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
本文围绕以下两个部分展开: 一、意图 二、两个案例 1. 拨打电话、发送Email、提取图片 2. 显式意图
一、基本知识点 1、<activity android:label="第一个activity" android:name=".Main2Activity"/&
理解活动 活动就是一个包含应用程序的用户界面的窗口 Activity四种状态 Active/Runing 一个新 Activi
android跳转到另一个界面,是app常用的操作。我们可以跳转到该应用本身的界面,亦可以跳转到系统的
在有些时候,我们可能想打开某个不确定的应用,比如,我们想要通过浏览器打开百度的站点,但是我们
原生的动作意图(native activity intent) 本文地址: http://blog.csdn.net/caroline_wendy/article/
1. 启航 欢迎学习Android设计,这里你将学习如何设计更好的Android应用程序 1.1创作意图 我们会围绕
看这里:Android必备:Activity 活动 和 Intent 意图 的学习整理 在Android必备:Android UI控件的
  Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent (意图) ,Intent提供
我们也可以使用隐士意图激活自定义的界面,并且可以携带数据: 效果: 点击第二个按钮后: 点击最后
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号