《一:显示意图和隐式意图》
1.显示意图

//想打开的页面需要在创建意图时显式指定要打开那个Activity
Intent intent = new Intent(this, 指定Activity.class);
startActivity(intent);

2.隐式意图:没有说明要打开哪一个页面,而是通过匹配来确定怎么打开,若一个匹配就直接打开,多个匹配则以列表的形式选择打开(当应用只想和其他应用交互时才会用到)

第一种:只设置action

                在开启方MainActivity中
Intent intent = new Intent();
//想启动某个页面,可以为页面配置一个ACTION属性(也可在意图构造器中传入action类型创建意图)
intent.setAction("包名.action.自定义名称");startActivity(intent);
<!-- 1.被开启方AndroidManifest.xml中(对应activity中)-->
<intent-filter><action android:name="包名.action.自定义名称" /><!-- 2.本界面默认的页面,如果配置了一个或多个action标签,category标签必须配置 --><category android:name="android.intent.category.DEFAULT" />
</intent-filter>

第二种:intent.setAction()不是必须的,但是得配置dataAndType

            开启方MainActivity中
Intent intent = new Intent();//1.告诉系统想启动一个带有浏览器action的界面
intent.setAction("android.intent.action.VIEW");//浏览器显示界面action
//2.创建uri的型数据
Uri data = Uri.parse(网址);//创建uri
//3.告诉系统该展示成什么样的格式
intent.setDataAndType(data, "text/html");//为意图设置data和typestartActivity(intent);被开启方AndroidManifest.xml中(对应activity中)
<intent-filter ><!-- 1.若请求uri(data)必须配置此action的值,sms可不配 --><action android:name="android.intent.action.VIEW" /><!-- 2.本界面默认的页面,如果配置了一个或多个action标签,category标签必须配置 --><category android:name="android.intent.category.DEFAULT" /><!-- 3.如果配置了data,则必须配置action,不管代码中是否有setAction --><data android:mimeType="类型" android:scheme="网址头(如http)" android:host="主机地址"android:port="端口" android:path="子文件路径" />
</intent-filter>

《二:界面间数据的传递【显式意图传值方式】(界面一到界面二)》

1.界面一中:

//1.创建意图时指定打开界面二
Intent intent = new Intent(界面一的Activity.this, 界面二的Activity.class);
//2.1为界面二的意图中设置需要传递的数据类型: 名称和值
intent.putExtra(String name, dataTypeValue);
//2.2为界面二的意图中设置需要传递的对象(对象必须实现序列化接口)
intent.putExtra(String objName, obj);
//3.启动意图
startActivity(intent);

2.相应界面二中:

Intent intent = getIntent();//2.1直接指定数据类型获取值
dataType name = (dataType) intent.getIntExtra(dataName, 无值返回);
//2.2获取Extras再从中获取值
dataType name = (dataType) intent.getExtras().get(dataName);
//2.3获取实现序列化接口对象
objType obj = (objType) intent.getExtras().getSerializable(objName)

《三:隐式意图实例-隐式浏览器和激活系统短信》(当应用只想和其他应用交互时才会用到)

(1)隐式浏览器 (目的:当用户点击一个网址时,选用自定义的webview打开(隐式弹出的列表选择),而不是系统自带的浏览器)

1.启动浏览器 查看启动Activity意图的日志。
图片

2.查看 浏览器 的源代码中的AndroidManifest.xml文件,找到对应的应用,复制相应的intent-filter配置到本项目的MainActivity的activity中.

<intent-filter><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><data android:scheme="http" /><data android:scheme="https" /><data android:scheme="about" /><data android:scheme="javascript" /></intent-filter>

3.在activity_main.xml中:

 <EditText
        android:id="@+id/browser_et"android:layout_width="match_parent"android:layout_height="wrap_content" /><WebView android:id="@+id/browser_wv"android:layout_width="match_parent"android:layout_height="match_parent" />

4.在MainActivity中,启用WebView:(查看BrowserActivity.java中搜索 getIntent 得启发)

        EditText et = (EditText) findViewById(R.id.browser_et);WebView wv = (WebView) findViewById(R.id.browser_wv);Intent intent = getIntent();Uri data = intent.getData();if(data != null){String uri = data.toString();et.setText(uri);//1.某些网页控件默认不支持js,需手动设置打开wv.getSettings().setJavaScriptEnabled(true);//2.加载Uriwv.loadUrl(uri);//3.解决跳转到新界面还需要打开新的浏览器问题,使用当前的即可wv.setWebViewClient(new WebViewClient(){public boolean shouldOverrideUrlLoading(WebView view, String url) {view.loadUrl(url);//返回true表明告诉系统不要打开新的浏览器,自己处理return true;}});}

5.AndroidManifest.xml中配置网络访问权限:

(2)激活系统短信

Intent intent = new Intent(Intent.ACTION_VIEW);
//系统信息发送界面View,可在创建意图时设置actionintent.setData(Uri.parse("sms:12345"));
intent.putExtra("subject", "大众点评");
intent.putExtra("sms_body", "快点发货,饿死了");startActivity(intent);

《四:开启新界面,获得新界面的返回值》(设置头像)

1.显式为得到一个结果而开启一个Activity(按钮点击事件,界面一)

    public void chooseIconClick(View v){Intent intent = new Intent(this, ChooseIconActivity.class);//1为requestCode,标识是哪一个页面会返回结果,对应onActivityResult中的参数startActivityForResult(intent, 1);}

2.为每一张图片绑定一个点击监听器(界面二)

public class ChooseIconActivity extends Activity implements OnClickListener{@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_choose_icon);findViewById(R.id.e0).setOnClickListener(this);findViewById(R.id.e1).setOnClickListener(this);findViewById(R.id.e2).setOnClickListener(this);findViewById(R.id.e3).setOnClickListener(this);}}

3.根据图片的id判断是哪张图片,将图片的id装入intent中作为result返回至请求界面(界面二)

public void onClick(View arg0) {Intent data = new Intent();switch (arg0.getId()) {case R.id.e0:data.putExtra("icon", R.drawable.e0);break;case R.id.e1:data.putExtra("icon", R.drawable.e1);break;case R.id.e2:data.putExtra("icon", R.drawable.e2);break;case R.id.e3:data.putExtra("icon", R.drawable.e3);break;}//resultCode用于标识本页面返回值的类型,可能本页面会有多种类型的值,//对应startActivityForResult中的接收动作的参数setResult(0, data);//必须关闭当前界面才能将意图传出finish();}

4.使用来自界面二的意图(数据)

protected void onActivityResult(int requestCode, int resultCode, Intent data) {if(data != null){//为界面一中的ImageView设置图片if(requestCode == 1){iconIv.setImageResource(data.getIntExtra("icon", 0));}}

5.小结:

(1)View.getId():可以得到id.
(2)开启一个Activity有两种形式:需要返回结果和不需要的。前者还需要函数 onActivityResult接收结果。
(3)resultCode在传值时用于标识本页面返回值的类型,requestCode标识是来自哪一个页面返回结果
(4)若要为多个View设置点击事件,采用在本类中事项setOnClickListener,这样只需要写一个函数判断不同的id即可。
(5)界面二的数据要传到界面一中,必须在界面二中调用finish(),不然界面二关闭不了,到不到界面一。

安卓开发-Activity的显示意图和隐式意图+实例+Activity界面间数据的传递实例相关推荐

  1. 关于android隐式启动activity的分析和说明,Android学习之Intent中显示意图和隐式意图的用法实例分析...

    本文实例讲述了Android学习之Intent中显示意图和隐式意图的用法.分享给大家供大家参考,具体如下: Intent(意图)主要是解决Android应用的各项组件之间的通讯. Intent负责对应 ...

  2. Android(Intent意图初解,显示意图,隐式意图,意图过滤器)

    Android Intent 简介:Intent被称为意图,是安卓程序中的一种比较重要的组件间交户的方式,可以用于组件间的跳转,传递数据等.通常用作启动Activity,Service以及发送广播等. ...

  3. 2020-11-9(intent显式意图和隐式意图)

    activity对象被创建时,系统会自动调用oncreat方法 所有的四大组件都不能自己创建对象,需要系统来创建(通过清单文件AndroidMannifest.xml反射的方式来创建,清单文件声明节点 ...

  4. Android显式意图和隐式意图

    intent基本理解 我们都知道Android四大组件:Activity .Service.broadcast receiver 及 内容提供者. 其中,Activity .Service.broad ...

  5. android 之 使用显示意图和隐式意图完成Activity的跳转

    通过显示意图激活目标组件的方式有: 1.通过构造函数 intent = new Intent(启动源,启动目标): 实例见:博客    ==>android 之Activity间的相互跳转   ...

  6. Android学习记录(7)—Intent中显示意图和隐式意图的用法

    Intent(意图)主要是解决Android应用的各项组件之间的通讯. Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的 ...

  7. Bundle与Intent机制,Intent显式/隐式意图,传递参数及参数序列化,各种跳转(如打开浏览器),Intent的Size

    intent传递有没有大小限制,是多少?- http://blog.csdn.net/wingichoy/article/details/50679322 Android Intent调用 Uri的使 ...

  8. Android的隐式意图

    Android的隐式意图 对于隐式意图,Android是怎样寻找到这个最合适的组件呢?记的前面我们在定义活动时,指定了一个intent-filter,Intent Filter(意图过滤器)其实就是用 ...

  9. Android笔记 隐式意图vs显示意图+隐式意图打开短信应用demo

    显示意图一般应用于同一个应用中 执行效率高 隐式意图用于不同的应用程序,要激活别的应用程序或者让自己的某一界面被别人激活 隐式意图执行过程: 1查询系统中所有Activity看有没有满足条件的Acti ...

最新文章

  1. graphviz画图
  2. Android 2.2 r1 API 中文文档系列(12) —— Button
  3. Maven基础与私服搭建
  4. 修改UBOOT和LINUX调试串口(TI达芬奇芯片--DM6467)
  5. Oracle结构设计技巧(访问数据库象访问内存一样 快)
  6. .NET Core 中的 Generic Host快速使用指南
  7. CM3计算板读取SHT30以及I2C驱动
  8. java 数字信号_数字信号处理理论及C++和Java实现 数字信号处理理论算法与实现...
  9. 牛逼!计算机基础知识总结与操作系统 PDF 开放下载了!
  10. 轻量级过程改进项目启动
  11. cdn转发防攻击_一个既可以加速又可以防御的CDN产品
  12. dockerfile 创建Jenkins镜像
  13. (1 24) 3 java代码_《Java语言程序设计》测试题及参考答案(第1部分)
  14. PowerDesigner数据库设计PDM基于Excel的导入导出总结
  15. 2021-08-08索引在小数据量的时候用处不大,但在大数据的时候十分明显
  16. CocoaPods 简易教程 Alamofire请求数据 Swift
  17. 【SSM项目实战】航班订票系统SpringMVC+MyBatis+LayUI
  18. Dos攻击工具burpsuite完整使用指南
  19. HTML系列之多媒体视频标签 video
  20. rmd中将html转为pdf,Rmd文件转化为PDF报告

热门文章

  1. 大衣哥谷传民纷争,若和合国际收购《火火的情怀》收购价格受关注
  2. Hamming Weight的算法分析
  3. 国外注册域名和国内注册有什么不同?
  4. 微信小程序点击发送短信验证(60秒倒计时)
  5. N-HiTS: Neural Hierarchical Interpolation for Time Series Forecasting
  6. has no exported member
  7. 数据结构C语言实现 勘误
  8. 九 曝光矫正与自动包围曝光
  9. token过期后刷新token并重新发起请求
  10. Androidnbsp;LinearLayout与Relat…