Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
°²×¿µÚʮһÌì±Ê¼Ç-IntentÓëinter-filterÅäÖÃ
 
×÷ÕߣºÉ­ÁÖÉ­ À´×ÔÓÚ£º²©¿ÍÔ° ·¢²¼ÓÚ 2016-3-26
  2188  次浏览      31
 

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×Ö·û´®Âú×ãÒÔϸñʽ

schema://host:prot/path

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"

   
2188 ´Îä¯ÀÀ       31
 
Ïà¹ØÎÄÕÂ

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖÓë̽ÌÖ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
 
Ïà¹ØÎĵµ

Android_UI¹Ù·½Éè¼Æ½Ì³Ì
ÊÖ»ú¿ª·¢Æ½Ì¨½éÉÜ
androidÅÄÕÕ¼°ÉÏ´«¹¦ÄÜ
Android½²ÒåÖÇÄÜÊÖ»ú¿ª·¢
Ïà¹Ø¿Î³Ì

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
Androidϵͳ¿ª·¢
AndroidÓ¦Óÿª·¢
ÊÖ»úÈí¼þ²âÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

androidÈË»ú½çÃæÖ¸ÄÏ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
AndroidÊÖ»ú¿ª·¢£¨¶þ£©
AndroidÊÖ»ú¿ª·¢£¨Èý£©
AndroidÊÖ»ú¿ª·¢£¨ËÄ£©
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖ̽ÌÖ
ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
ÊÖ»úÈí¼þ×Ô¶¯»¯²âÊÔÑо¿±¨¸æ

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
AndroidÓ¦Óÿª·¢
Androidϵͳ¿ª·¢
ÊÖ»úÈí¼þ²âÊÔ
ǶÈëʽÈí¼þ²âÊÔ
AndroidÈí¡¢Ó²¡¢ÔÆÕûºÏ

ÁìÏÈIT¹«Ë¾ android¿ª·¢Æ½Ì¨×î¼Ñʵ¼ù
±±¾© Android¿ª·¢¼¼Êõ½ø½×
ijÐÂÄÜÔ´ÁìÓòÆóÒµ Android¿ª·¢¼¼Êõ
ijº½Ì칫˾ Android¡¢IOSÓ¦ÓÃÈí¼þ¿ª·¢
°¢¶û¿¨ÌØ LinuxÄÚºËÇý¶¯
°¬Ä¬Éú ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
Î÷ÃÅ×Ó Ç¶Èëʽ¼Ü¹¹Éè¼Æ