Android中的Intent是一个非常重要且常用的类,可以用来在一个组件中启动App中的另一个组件或者是启动另一个App的组件,这里所说的组件指的是Activity、Service以及Broadcast。
Intent主要有以下几种重要用途: https://blog.csdn.net/iispring/article/details/48417779
1. 启动Activity:可以将Intent对象传递给startActivity()方法或startActivityForResult()方法以启动一个Activity,该Intent对象包含了要启动的Activity的信息及其他必要的数据。
2. 启动Service:可以将Intent对象传递给startService()方法或bindService()方法以启动一个Service,该Intent对象包含了要启动的Service的信息及其他必要的数据。
3. 发送广播:广播是一种所有App都可以接收的信息。Android系统会发布各种类型的广播,比如发布开机广播或手机充电广播等。我们也可以给其他的App发送广播,可以将Intent对象传递给sendBroadcast()方法或sendOrderedBroadcast()方法或sendStickyBroadcast()方法以发送自定义广播。
显式的intent:指定要跳转的类名
隐式的intent:不指定组件名,而指定Intent的Action,Data,或Category,当我们启动组件时, 会去匹配AndroidManifest.xml相关组件的Intent-filter,逐一匹配出满足属性的组件,当不止一个满足时, 会弹出一个让我们选择启动哪个的对话框。
Intent有七个属性:
ComponentName(组件名称)
Action(动作)----intent要完成的抽象动作,只要能有一个action;<action android:name="android.intent.action.MAIN" />表示是程序的入口。当一个Android应用中有一个以上的入口Activity时,安装App时会生成多个的app图标,这几个APP其实是同一个,卸载其中一个,另外的也会被卸载。
Category(类别)----用于为action提供附加类别信息,一般和action一起使用。android.intent.category.LAUNCHER决定Activity是否列入系统的启动器。如果没有这个设置,手机设置中的“应用管理”,可以看到应用成功安装了,但是由于没有App的启动器,所以桌面上找不到。
Data(数据)-----向action属性提供操作的数据,通常是URI对象
Type(MIME类型)
Extras(额外数据)-----通常用语多个action之间的数据交换,是一个Bundle对象,通过键值对进行数据存储。
Flags(标记)
------------Intent的创建使用三种方法---------
// //通过制定的包名和类名,叫做显式意图
Intent inten = new Intent(this, NewActivity.class);//方法一
//
// Intent inten = new Intent();//方法二
// inten.setAction("newActivity");//设置跳转的动作
//inten.addCategory("android.intent.category.DEFAULT");//categary要和清单文件中的categary一样;这一句必须要,否则报错
//inten.setDataAndType(Uri.parse("newac:"+1101),"aa/bb");//newac要和清单文件中的scheme相同,aa/bb要和清单文件中的MIMIE相同
//
// //方法三
//inten.setClassName("com.example.wofu.four","com.example.wofu.four.NewActivity");//第一个参数是包名,是清单文件中的package;第二个参数是要跳转的到的activity
//
startActivity(inten);/*跳转到下一个页面*/
-------------manifest.xml------------
<!--//name就是要显示的activity的类名-->
<activity
android:name=".NewActivity"
android:label="newAc"
android:theme="@style/AppTheme">
<intent-filter>正式设置显式意图用的
<action android:name="newActivity" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:mimeType="aa/bb"
android:scheme="newac"/>
</intent-filter>
</activity>