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];
文章归档
文章标签
友情链接