Intent简单介绍
Intent目前翻译为意图,所谓意图就是想做什么。是Android系统组件之间的通信的桥梁。其描述的基本内容可以分为:conponentName(组件名称)、Action(动作名称)、Data(数据)、Category(类别)、Extra(附加数据)和Log(标志位)六个部分。
1 、指定conponentName
指定组件名称的方式又叫显示调用,明确要调用的组件,直接调用组件名,调用方式如下
Intentgoto=newIntent();goto.setClass(OneActivity.this,Second.class);OnActivity.this.startActivity(goto);
当然两个Activity必须在AndroidManifest.xml注册。
2 、指定Action
没有明确指出组件名,隐式调用,需要和Data,Catagory,Extra配合使用。这个隐式调用又分为静态调用和动态调用。
(一)静态隐式调用
这种调用在方式上面体现为必须将要调用的组件的IntentFilter在AndroidManifest.xml里面注册,并且至少需要一个<action>标签,没有则任何Intent都不匹配。
下面是Activity中的写法,目的是Activity传递数据给BroadcastReceiver
IntentsendIntent=newIntent("intent_1");//动作名称为action_1sendIntent.putExtra("sendmsg","你好");//存储数据到Intent中,通过广播携带到目的组件中MainActivity.this.sendBroadcast(sendIntent);//发送广播
广播内容
publicclassMyBroadCastReceiverextendsBroadcastReceiver{@OverridepublicvoidonReceive(Contextcontext,Intentintent){Toast.makeText(context,intent.getExtra("sendmsg"),Toast.LENGTH_LONG).show();}}
注册接收者,必须要,不然过滤器无法找到
<receiverandroid:name=".MyBroadCastReceiver"><intent-filter><actionandroid:name="intent_1"/></intent-filter></receiver>
同样的道理,在Activity和Activity之间通讯的时候,不过Activity在注册的时候要加一个标签
<intent-filter><actionandroid:name="intent_2"/><categoryandroid:name="android.intent.category.DEFAULT"/></intent-filter>
(二)动态隐式调用
也就是不在注册文件里面注册intentFilter而是需要调用的时候再注册。如下
IntentFiltermyfilter=newIntentFilter();MyBroadCastmybroad=newMyBroadCast();myfilter.addAction("action_3");registerReceiver(mybroad,myfilter);//动态注册Intentintent=newIntent();intent.putExtra("msg","哈哈");intent.setAction("action_3");Main.this.sendBroadcast(intent);
3、使用系统自带的ActionName
由于实在太多这里就不详解了,用法大致为:
Intentintent=newIntent(Intent.ACTION_DIAL);//显示电话拨号界面this.startActivity(intent);
//打开浏览器并且指定网页Uriuri=Uri.parse("Intentintent=newIntent(Intent.ACTION_VIEW,uri);this.startActivity(intent);
以下是所有系统自带ActionName:
android.intent.action.ALL_APPSandroid.intent.action.ANSWERandroid.intent.action.ATTACH_DATAandroid.intent.action.BUG_REPORTandroid.intent.action.CALLandroid.intent.action.CALL_BUTTONandroid.intent.action.CHOOSERandroid.intent.action.CREATE_LIVE_FOLDERandroid.intent.action.CREATE_SHORTCUTandroid.intent.action.DELETEandroid.intent.action.DIALandroid.intent.action.EDITandroid.intent.action.GET_CONTENTandroid.intent.action.INSERTandroid.intent.action.INSERT_OR_EDITandroid.intent.action.MAINandroid.intent.action.MEDIA_SEARCHandroid.intent.action.PICKandroid.intent.action.PICK_ACTIVITYandroid.intent.action.RINGTONE_PICKERandroid.intent.action.RUNandroid.intent.action.SEARCHandroid.intent.action.SEARCH_LONG_PRESSandroid.intent.action.SENDandroid.intent.action.SENDTOandroid.intent.action.SET_WALLPAPERandroid.intent.action.SYNCandroid.intent.action.SYSTEM_TUTORIALandroid.intent.action.VIEWandroid.intent.action.VOICE_COMMANDandroid.intent.action.WEB_SEARCHandroid.net.wifi.PICK_WIFI_NETWORKandroid.settings.AIRPLANE_MODE_SETTINGSandroid.settings.APN_SETTINGSandroid.settings.APPLICATION_DEVELOPMENT_SETTINGSandroid.settings.APPLICATION_SETTINGSandroid.settings.BLUETOOTH_SETTINGSandroid.settings.DATA_ROAMING_SETTINGSandroid.settings.DATE_SETTINGSandroid.settings.DISPLAY_SETTINGSandroid.settings.INPUT_METHOD_SETTINGSandroid.settings.INTERNAL_STORAGE_SETTINGSandroid.settings.LOCALE_SETTINGSandroid.settings.LOCATION_SOURCE_SETTINGSandroid.settings.MANAGE_APPLICATIONS_SETTINGSandroid.settings.MEMORY_CARD_SETTINGSandroid.settings.NETWORK_OPERATOR_SETTINGSandroid.settings.QUICK_LAUNCH_SETTINGSandroid.settings.SECURITY_SETTINGSandroid.settings.SETTINGSandroid.settings.SOUND_SETTINGSandroid.settings.SYNC_SETTINGSandroid.settings.USER_DICTIONARY_SETTINGSandroid.settings.WIFI_IP_SETTINGSandroid.settings.WIFI_SETTINGSandroid.settings.WIRELESS_SETTINGS
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。