1.Intent¶ÔÏó¼òÊö
AndroidÓ¦ÓÃÖÐÓаüº¬ÈýÖÖÖØÒª×é¼þ:Activity,Service,BroadcastReceiver(ÁíÍ⻹ÓÐÒ»¸öContextProvider)Ó¦ÓóÌÐò²ÉÓÃÁËÒ»Öµķ½Ê½À´Æô¶¯ËüÃÇ---¶¼ÊÇÒÀ¿¿IntentÀ´Æô¶¯µÄ,Intent¾ÍÊÇ·â×°Á˳ÌÐòÏëÒªÆô¶¯µÄ³ÌÐòµÄÒâͼ,²»½öÈçЩ,Intent»¹¿ÉÓÃÓÚÓë±»Æô¶¯×é¼þ½»»»ÐÅÏ¢
Activity:
startActivity(Intent intent) startActivityForResult(Intent intent,int requestCode) |
Service:
ComponentName startService(Intent intent) boolean bindServcie(Intent intent,ServiceConnection conn,int flags) |
BroadcastReceiver
sendBroadcast(Intent intent) sendBroadcast(Intent intent,String receiverPremission) sendOrderedBroadcast(Intent intent,String receiverPremission,BroadcastReceiver resultReceiver,
Handler scheduler,int initiaCode,String initialData,Bundle initiaExtras) sendOrderBroadcast(Intent intent,String receiverPermission) sendStickyBroadcast(Intent intent), sendStickyOrderdBroadcast(Intent intent,BroadcastReceiver resultReceiver,
Handler scheduler,int initiaCode,String initialData,Bundle initiaExtras) |
2.Intent¶ÔÏóµÄÊôÐÔ
´óÖ°üº¬:Component,Action,Category,Data,Type,Extra,FlagÕâ7ÖÖÊôÐÔ,ÆäÖÐComponentÓÃÓÚÃ÷È·Ö¸¶¨ÐèÒªÆô¶¯µÄÄ¿±ê×é¼þ,¶øExtraÓÃÓÚЯ´øÐèÒª½»»»µÄÊý¾Ý
3.ComponentÊôÐÔ
IntentµÄComponentÊôÐÔÐèÒª½ÓÊÜÒ»¸öComponentName¶ÔÏó,ComponentName°üº¬ÈçϹ¹ÔìÆ÷
ComponentName(String pkg,String cls) //´´½¨PKG¾ÝÔÚ°üϵÄclsÀàËù¶ÔÓ¦µÄ×é¼þ ComponentName(Context pkg,String cls) //´´½¨PKG¾ÝÔÚ°üϵÄclsÀàËù¶ÔÓ¦µÄ×é¼þ ComponentName(Context pkg, Class<?> cls) //´´½¨PKG¾ÝÔÚ°üϵÄclsÀàËù¶ÔÓ¦µÄ×é¼þ |
ͬʱ»¹ÓÐÈçÏÂÈý¸ö·½·¨
setClass(Context packageContext,Class<?> cls) //ÉèÖøà Intent½«ÒªÆô¶¯µÄ×é¼þ¶ÔÓ¦µÄÀà setClassName(Context packageContext,String className) //ÉèÖøÃIntent½«ÒªÆô¶¯µÄ×é¼þ¶ÔÓ¦ µÄÀàÃû,Ҫȫ·¾¶ setClassName(String packageContext,String className) //ÉèÖøÃIntent½«ÒªÆô¶¯µÄ×é¼þ¶ÔÓ¦ µÄÀàÃû,Ҫȫ·¾¶ |
Context´ú±í·ÃÎÊÓ¦Óû·¾³ÐÅÏ¢µÄ½Ó¿Ú,¶øAndroidÓ¦ÓõİüÃûÔò×÷ΪӦÓõÄΨһ±êʶ,Òò´Ë
AndroidÓ¦ÓõÄContext¶ÔÏóÓë¸ÃÓ¦ÓõİüÃûÓÐÒ»Ò»¶ÔÓ¦µÄ¹ØÏµ ComponentÊôÐÔµÄIntentÒѾÃ÷È·ÁËËü½«ÒªÆô¶¯Äĸö×é¼þ,Òò´ËÕâÖÖIntentÒ²±»³ÆÎªÏÔʾÒâͼ
³£ÓÃÀ´Æô¶¯Í¬Ò»¸öÓ¦ÓóÌÐòÖÐ×é¼þ ¶øÃ»ÓÐÖ¸¶¨ComponetÊôÐÔµÄIntent±»³ÆÎªÒþʽÒâͼ,ÒþʽÒâͼûÓÐÃ÷¿ËÖ¸¶¨È¥Æô¶¯Äĸö×é¼þ,¾ÍÓý«»á¸ù¾ÝIntentÖ¸¶¨µÄ¹æÔòÈ¥Æô¶¯·ûºÏÌõ¼þµÄ×é¼þ,¾ßÌåÊÇÄĸö²»È·¶¨
*ʹÓÃÏÔʾÒâͼÆô¶¯ÁíÒ»¸öActivity
/** * ÏÔʾÒâͼ´ò¿ªµÚ¶þ¸öActivity * @param v */ public void open02(View v){ //´´½¨Ò»¸öCompon¶ÔÏó ComponentName comp = new ComponentName(this,SecondActivity.class);
Intent intent = new Intent();
//ΪIntentÉèÖÃComponÊôÐÔ
intent.setComponent(comp);
//Æô¶¯
startActivity(intent);
} |
µÚ¶þ¸öActivity
tv = (TextView) findViewById(R.id.tv); //µÃµ½Intento Intent intent = getIntent();
//»ñÈ¡Componet
ComponentName comp = intent.getComponent();
tv.setText("°üÃû" + comp.getPackageName()
+ ",×é¼þÃû³Æ:" + comp.getClassName());
|
¸ü¸ÄÆô¶¯IntentµÄд·¨
/** * ÏÔʾÒâͼ´ò¿ªµÚ¶þ¸öActivity * @param v */ public void open02(View v){
Intent intent = new Intent();
//ΪIntentÉèÖÃÊôÐÔ
intent.setClass(this,SecondActivity.class);
//Æô¶¯
startActivity(intent);
} |
ÏÂÃæÕâÖÖд·¨¸ü¼Ó¼òµ¥Ã÷ÁË
4.Action,CategoryÊôÐÔÓëintent-filter
ActionÓëCategoryÊôÐÔµÄÖµ¶¼ÊÇÒ»¸öÆÕͨµÄ×Ö·û´® ÆäÖÐAction´ú±í¸ÃIntentËùÒªÍê³ÉµÄ¶¯×÷(³éÏó)¶øCategory¸ÕÓÃÓÚActionÔö¼Ó¶îÍâµÄ¸½¼ÓÀà±ðÐÅÏ¢.ͨ³£Action»áÓëCategoryÊôÐÔ½áºÏʹÓÃ
ÒþʽÒâͼÆô¶¯Ò»¸öActivity
<!--×¢²áSecondActivity--> <activity android:name=".SecondActivity"> <intent-filter> <!--Ìí¼Ó¶¯×÷Ãû³Æ¿ÉÒÔËæ±ãд--> <action android:name="com.hello.SECOND"/> <!--Àà±ðÈç¹ûÊÇÕâ¸öĬÈÏDEFAULT¿ÉÒÔ²»Ð´,µ«½¨ÒéдÉÏ--> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> |
Æô¶¯Ò»¸öActivity
Intent intent = new Intent(); //ΪIntentÉèÖÃÊôÐÔ intent.setAction("com.hello.SECOND"); intent.addCategory("android.intent.category.DEFAULT"); //Æô¶¯ startActivity(intent); |
*ÆäÖÐActionÓëCategory¶¼¿ÉÒÔÓжà¸öÖµ
//»ñÈ¡ActionÓëCategoryµÄÖµ String action = intent.getAction();
Set<String> categories = intent.getCategories(); |
5.Ö¸¶¨Ìض¨µÄActionÓëCategoryµ÷ÓÃϵͳµÄActivity
AndroidϵͳÄÚ²¿ÌṩÁË´óÁ¿µÄ±ê×¼µÄActionÓëCategory³£Á¿
*·µ»Ø×ÀÃæ
/* ·µ»Ø×ÀÃæ */ public void goDesk(View v){ Intent intent = new Intent(); //д×Ö·û´® intent.setAction("android.intent.action.MAIN"); //д×Ö·û´® intent.addCategory("android.intent.category.HOME"); //Æô¶¯ startActivity(intent);
} |
*ʹÓÃϵͳÌṩºÃµÄ
Intent intent = new Intent(); intent.setAction(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); startActivity(intent); |
6.Data TypeÓëintent-filterÅäÖÃ
DataÊôÐÔ³£ÓÃÓÚÏòActionÊôÐÔÌṩ²Ù×÷µÄÊý¾Ý.DataÊôÐÔ½ÓÊÕÒ»¸öURIµÄ¶ÔÏó,Ò»¸öuri¶ÔÏóͨ³£Í¨¹ýÈçÏÂ×Ö·û´®µÄÐÎʽ
content://com.android.contacts/contacts/1 tel://110 |
*uri×Ö·û´®Âú×ãÒÔϸñʽ
content:ÊÇschema²¿·Ö com.android.contactsÊÇhost²¿·Ö
portÊÇ80Ê¡ÂÔÁË /contacts/1ÊÇpath²¿·Ö
TypeÊôÐÔÓÃÓÚÖ¸¶¨¸ÃDataËùÖ¸¶¨µÄURI¶ÔÓ¦ µÄMIMEÀàÐÍ,ÕâÖÖMIMEÀàÐÍ¿ÉÒÔÊÇÈÎÒâÈκÎ×Ô¶¨ÒåµÄMIMEÀàÐÍÖ»Òª·ûºÏABC/XYZ¸ñʽµÄ×Ö·û¼´¿É
DataÊôÐÔÓëTypeÊôÐÔ¹ØÏµ±È½Ï΢Ãî,ÕâÁ½¸öÊôÐÔÏ໥¸²¸Ç
Èç¹ûΪIntentÏÈÉèÖÃDataÊôÐÔ,ºóÉèÖÃTypeÊôÐÔ,ÄÇôTypeÊôÐÔ½«»á¸²¸ÇDataÊôÐÔ
Èç¹ûΪIntentÏÈÉèÖÃTypeÊôÐÔ,ºóÉèÖÃDataÊôÐÔ,ÄÇôDataÊôÐÔ½«»á¸²¸ÇTypeÊôÐÔ
Èç¹ûÏ£ÍûIntent¼´ÓÐDataÊôÐÔ,Ò²ÓÐTypeÊôÐÔÔòÓ¦¸Ãµ÷ÓÃIntentµÄsetDataAndType()·½·¨
DataÊôÐÔ
<data android:host="" android:mimeType="" android:path="" android:pathPattern="" android:pathPrefix="" android:port="" android:scheme="" android:ssp="" android:sspPattern="" android:sspPrefix=""/> |
1.host:ÉùÃ÷IntentµÄDataÊôÐÔµÄhost²¿·Ö
2.mimeType:ÓÃÓÚÉùÃ÷IntentDataÊôÐÔTypeÊôÐÔ
3.path:ÉùÃ÷DataÊôÐÔÖÐpath²¿·Ö
4.pathPatternËùÓÐÆ¥ÅäµÄDataÊôÐÔµÄpath²¿·ÖµÄÕýÔò±í´ïʽ
5.pathPrefix DataÊôÐÔµÄpathǰ׺
6.port :DataÊôÐÔµÄport²¿·Ö
7.scheme:DataÊôÐÔµÄÐÒ鲿·Ö,Èç:http://,tel://,content://
Æ¥Åä¹ý³Ì:
Èç¹û×é¼þµÄDataÔªËØÖ»Ö¸¶¨ÁËandroid:schemaÊôÐÔ,ÄÇôֻҪIntentµÄDataÊôÐÔ²¿·ÖÓëschema²¿·ÖÏàͬ¾Í¿ÉÆô¶¯
<data android:scheme="abcd"/> intent.setData(Uri.parse("abcd://")); |
Èç¹û×é¼þÖ¸¶¨ÁËschema,host,ÊôÐÔÄÇôֻҪIntentµÄDataÊôÐÔµÄschema,host,prot²¿·ÖÓëÖ®Ïàͬ¾Í¿ÉÆô¶¯,¿ÉÒÔ
ûÓÐportÊôÐÔ
<data android:scheme="abcd" android:host="www.fkjava.com" /> intent.setData(Uri.parse("abcd://www.fkjava.com")); |
Èç¹ûÄ¿±ê×é¼þµÄData×ÓÔªËØ,Ö»ÓÐportÊôÐÔ,ûÓÐhostÊôÐÔ,ÄÇôportÊôÐÔ²»»áÆð×÷Óà Èç¹ûÄ¿±ê×é¼þµÄData×ÓÔªËØÖ»ÓÐpathÊôÐÔ,ûÓÐhostÊôÐÔ,ÄÇôpathÊôÐÔ²»»áÆð×÷ÓÃ
<data android:scheme="abcd" android:host="www.fkjava.com" android:port="8888"/> intent.setData(Uri.parse("abcd://www.fkjava.com:8888")); |
7.µ÷ÓÃϵͳµÄÓ¦ÓÃ
1.´ò¿ªÖ¸¶¨ä¯ÀÀÆ÷µÄÒ³Ãæ
Intent intent = new Intent(); //ΪIntentÉèÖÃÊôÐÔ intent.setAction(Intent.ACTION_VIEW); //ÉèÖÃdata intent.setData(Uri.parse("http://www.qq.com")); //Æô¶¯ startActivity(intent); |
2.´òµç»°
Intent intent = new Intent(); //ΪIntentÉèÖÃÊôÐÔ intent.setAction(Intent.ACTION_CALL); //ÉèÖÃdata intent.setData(Uri.parse("tel://110")); //Æô¶¯ startActivity(intent); |
3.±à¼Ö¸¶¨µÄÁªÏµÈË
Intent intent = new Intent(); //ΪIntentÉèÖÃÊôÐÔ intent.setAction(Intent.ACTION_EDIT); //ÉèÖÃdata intent.setData(Uri.parse("content://com.android.contacts/contacts/1")); //Æô¶¯ startActivity(intent); |
8.ExtraÊôÐÔ
ExtraÊôÐÔÓÃÓÚÔÚ¶à¸öActitonÖ®¼ä½øÐÐÊý¾Ý´«µÝ,IntentµÄExtraÊôÐÔÖµÓ¦¸ÃÊÇÒ»¸öBundle¶ÔÏó,Bundle¶ÔÏó¾ÍÊÇÒ»¸öMap¶ÔÏó,ʹÓÃintent.putExtra(key,value)¾Í¿ÉÒÔ±£´æÊý¾Ý
9.FLAGÊôÐÔ
1.Intent.FLAGACTIVITYCLEAR_TOPÓÃÓÚÇå³ýµ±Ç°Activity stackÖеÄActivity,ÏàͬÓÚsingleTask
android:launchMode="singleTask" abcd---Æô¶¯b,¾ÍÖ±½ÓÏú»ÙBÉÏÃæµÄ--AB
2.Intent.FLAGACTIVITYBROUGHTTOFRONTÈç¹ûͨ¹ýFLAGÆô¶¯µÄActivityÒѾ´æÔÚÏ´ÎÔÙ´ÎÆô¶¯Ê±ÒÔÕâÖÖģʽֱ½Ó°ÑstackÖеÄActivity´øµ½Ç°Ì¨,ÓеãsingleInstance¸Ð¾õandroid:launchMode="singleInstance"
3.Intent.FLAGACTIVITYNEW_TASKÏ൱ÓÚstardardÆô¶¯Ä£Ê½android:launchMode="standard"
4.Intent.FLAGACTIVITYNO_ANIMATION,²»Ê¹Óùý¶É¶¯»
5.Intent.FLAGACTIVITYNO_HISTORY,ûÓÐÀúÊ·¼Ç¼,Æô¶¯Íê³Éºó¾ÍÔÙÆô¶¯ÆäËüµÄActivityʱ,ÕâÖÖģʽµÄActivityÖ±½ÓÏú»Ù,²»ÔÚ;StackÖÐ,µã»÷·µ»ØÊÇ¿´²»µ½µÄ
6.Intent.FLAGACTIVITYREORDERTOFRONT,Ö±½Ó´øµ½Stack¶¥²¿abcd,ÕâÖÖÆôÓÃacdb
7.Intent.FLAGACTIVITYSINGLE_TOPÏ൱ÓÚandroid:launchMode="singleTop"
|