Intent 简单使用
来源:互联网 发布:精索静脉曲张程度数据 编辑:程序博客网 时间:2024/06/11 02:11
Intent 简介
Intent 是一个消息传递对象,使用它从其他应用组件请求操作。尽管 Intent 可以通过多种方式促进组件之间的通信,但其基本用例主要包括以下三个:
- 启动 Activity:
Intent 传递给startActivity()
,来启动新的 Activity 。Intent 描述了要启动的 Activity,并携带了任何必要的数据。在 Activity 完成后收到结果,调用startActivityForResult()
启动另一个 Activity。在 Activity 的onActivityResult()
回调中, 结束 Activity 将数据作为单独的 Intent 对象被前一个 Activity 接收。- 启动服务:
Service 不使用用户界面而在后台执行操作。通过将 Intent 传递给startService()
,可以启动服务执行一次性操作(例如,下载文件)。Intent 描述了要启动的服务,并携带了任何必要的数据。如果服务旨在使用客户端-服务器接口,则通过将 Intent 传递给bindService()
,可以从其他组件绑定到此服务。- 传递广播:
广播是任何应用均可接收的消息。系统将针对系统事件(例如:系统启动或设备开始充电时)传递各种广播。通过将 Intent 传递给sendBroadcast()
、sendOrderedBroadcast()
或sendStickyBroadcast()
,可以将广播传递给其他应用。
使用 Intent
创建 Intent
- 显式 Intent - 按名称(完全限定类名)指定要启动的组件。
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
- 隐式 Intent - 不会指定特定的组件,而是声明要执行的常规操作,从而允许其他应用中的组件来处理它。
配置 Manifest.xml
在 Manifest.xml
中目的 Activity 中设置意图过滤器 <intent-filter>
设置 <action>
,<data>
和 <category>
属性
<activity android:name=".SecondActivity"> <intent-filter> <action android:name="android.intent.action.my_action"/> <category android:name="android.intent.category.my_category"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter></activity>
创建Intent
Intent intent = new Intent(); intent.setAction("xxx"); intent.addCategory("xxx"); // 还有 intent.setData("xxx"); intent.setType("xxx"); // or intent.setDataAndType("xxx","yyy");
添加数据
// putExtra 传值 intent.putExtra("key_name", data); // 或着使用 Bundle Bundle bundle = new Bundle(); bundle.putString("data", data); intent.putExtras(bundle);
启动 Activity
- 将 Intent 传递给
startActivity()
或者startActivityForResult()
启动 Activity
startActivity(intent); // 或者 startActivityForResult(intent, 0);
返回数据
- 以
startActivityForResult(intent, 0)
方法启动Activity,setResult(RESULT_OK,intent)方法配置返回数据,重写 onActivityResult() 方法
// 在后一个 Activity 中 setResult(RESULT_OK,intent); // 在前一个 Activity 中,重写 onActivityResult() 方法 @Override protected void onActivityResult (int requestCode, int resultCode, Intent data) { switch (resultCode){ case RESULT_OK: Bundle bind = data.getExtras(); String data = b.getString("back_key"); break; default: break; } }
Intent 启动 Service
显式 Intent
Intent downloadIntent = new Intent(this, DownloadService.class); downloadIntent.setData(Uri.parse(fileUrl)); startService(downloadIntent);
隐式 Intent
Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage); sendIntent.setType("text/plain"); if (sendIntent.resolveActivity(getPackageManager()) != null) { startActivity(sendIntent); }
全部代码放在github上:https://github.com/bazhancong/IntentDemo
0 0
- Intent 简单使用
- Intent的简单使用
- Android Intent Filter简单使用
- Android Intent Filter简单使用
- Android Intent Filter简单使用
- Android中的Intent简单使用
- Intent意图的简单使用
- Android Intent 简单使用介绍
- android中Intent简单使用
- Android中Intent的简单使用
- Intent 意图简单使用实现页面跳转
- Android中Intent.setAction简单使用
- Android---Intent传值简单使用
- Intent(显示使用intent)
- Android初级学习之Intent的简单使用
- 笔记40 | Android通讯之Intent的简单使用
- intent 使用
- Intent 使用
- poj 3304 Segments
- LeetCode 387. First Unique Character in a String
- 虚函数、纯虚函数在C++和java中的区别
- JS-笔记
- 回调函数总结
- Intent 简单使用
- 使用闭包
- Mootools试用体会
- cifar-10数据转为图片(jpg,png)
- Mybatis源码解析四、SqlSession运行过程
- java的动态代理机制详解
- mysql官方文档阅读笔记(二)整体目录翻译
- ETL利器Kettle实战应用解析系列二 【应用场景和实战DEMO下载】
- 在循环的过程中删除数组元素的问题