android意图和意图监听器技术

Android  /  houtizong 发布于 3年前   165

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和portsIntent 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获取到的数据 *  */@Overrideprotected 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");// 访问自定义的actionintent.addCategory("com.baihe.aaa");// 访问类别intent.setDataAndType(Uri.parse("baihe://baidu.com/index.html"),"text/html");// 访问页面startActivity(intent);// 启动意图

 

 

 

 

   

 

 

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客