隨筆-348  評(píng)論-598  文章-0  trackbacks-0
          很多人對(duì)文檔中的Intent和IntentFilter不理解是什么意思,我這里舉例解釋下。
          Intent字面意思就是目標(biāo),目的。通俗一點(diǎn),需要達(dá)成某些目標(biāo),則需要提供一些動(dòng)作,這些目標(biāo)的分類,以及達(dá)成這些目標(biāo)所需要的一些數(shù)據(jù)等等。Android中的Intent通過(guò)Action,Category和data等屬性進(jìn)行了相應(yīng)的描述,我們想做某些事情(達(dá)成某些目標(biāo)),就需要填寫這些參數(shù)的部分或全部,這樣Android才會(huì)幫助我們自動(dòng)的去進(jìn)行某些操作。
          IntentFilter是配合Intent而生的,你有目標(biāo)行動(dòng)或者結(jié)果,那么那些行動(dòng)和結(jié)果就會(huì)有他完成的特定要求,這些要求就是IntentFilter,可以理解為Intent和IntentFilter是相對(duì)應(yīng)的。
          <activity android:name=".TestService" android:label="@string/app_name">
                      
          <intent-filter>
                          
          <action android:name="android.intent.action.MAIN" />
                          
          <category android:name="android.intent.category.LAUNCHER" />
                          
          <action android:name="android.intent.action.STORE_REQUEST"></action>
                          
          <category android:name="android.intent.category.ALTERNATIVE" />
                          
          <category android:name="android.intent.category.SELECTED_ALTERNATIVE" />
                      
          </intent-filter>

                      
          <intent-filter>
                          
          <action android:name="android.intent.action.TIGERTIAN"></action>
                          
          <category android:name="android.intent.category.DEFAULT"></category>
                          
          <data android:scheme="x-id"></data>
                      
          </intent-filter>
                      
                      
          <intent-filter>
                          
          <action android:name="android.intent.action.EDIT"></action>
                          
          <category android:name="android.intent.category.DEFAULT"></category>
                      
          <category android:name="android.intent.category.BROWSABLE"></category>
          </intent-filter>
                  
          </activity>
          上面的Activity有三個(gè)Filter,第一個(gè)是給Android系統(tǒng)用的,表示這個(gè)Activity可以顯示在桌面上(Launcher中)。同時(shí)Alternative表明,這個(gè)Activity可以
          變成OptionMenu,供其他Activity直接調(diào)用。
          后面兩個(gè)Filter就是我自定義的了,第二個(gè)Filter可以在其他Activity中用如下方法直接調(diào)用:
                          Uri uri = Uri.parse("x-id://www.google.com/getDetails?id=123");
                          Intent in 
          = new Intent();
                          in.setAction(
          "android.intent.action.TIGERTIAN");
                          in.addCategory(Intent.CATEGORY_DEFAULT);
                          in.setData(uri);
                          
          //in.setClassName("com.tigertian.service", "com.tigertian.service.TestService");
                          TestActivity.this.startActivity(in);
          在Filter配置中CATEGORY_DEFAULT是不可缺少的,想調(diào)用這個(gè)Service,可以不指定Class,但其他條件必須匹配(CATEGORY_DEFAULT可以不設(shè)置,Android默認(rèn)會(huì)自動(dòng)加上),通過(guò)Action,category和data就可以調(diào)用相應(yīng)的Activity了,這是Android幫你做的,當(dāng)然如果系統(tǒng)中存在多個(gè)匹配這些條件的Activity或者Service,Android根據(jù)優(yōu)先級(jí)進(jìn)行調(diào)用。
          第三個(gè)調(diào)用方式如下:
                          Uri uri = Uri.parse("x-id://www.google.com/getDetails?id=123");
                          Intent in 
          = new Intent();
                          in.setAction(Intent.ACTION_EDIT);
                          in.addCategory(Intent.CATEGORY_BROWSABLE);
                          
          //in.setData(uri);
                          
          //in.setComponent(new ComponentName("com.tigertian.service", "com.tigertian.service.TestService"));
                          TestActivity.this.startActivity(in);
          看到?jīng)]有?可以不指定CATEGORY_DEFAULT,Android自動(dòng)幫你添加。就是這么簡(jiǎn)單。

          ---------------------------------------------------------
          專注移動(dòng)開(kāi)發(fā)

          Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
          posted on 2010-02-03 18:01 TiGERTiAN 閱讀(37716) 評(píng)論(11)  編輯  收藏 所屬分類: JavaAndroid

          評(píng)論:
          # re: Android的Intent和IntentFilter應(yīng)用說(shuō)明一例 2010-09-16 17:30 | 講的什么東西!!
          IntentFilter是配合Intent而生的,你有目標(biāo)行動(dòng)或者結(jié)果,那么那些行動(dòng)和結(jié)果就會(huì)有他完成的特定要求,這些要求就是IntentFilter,可以理解為Intent和IntentFilter是相對(duì)應(yīng)的。
          后面的列子也看不懂!  回復(fù)  更多評(píng)論
            
          # re: Android的Intent和IntentFilter應(yīng)用說(shuō)明一例 2010-09-16 17:32 | TiGERTiAN
          @ 講的什么東西!!
          你一點(diǎn)都不學(xué)習(xí),當(dāng)然看不懂了。  回復(fù)  更多評(píng)論
            
          # re: Android的Intent和IntentFilter應(yīng)用說(shuō)明一例 2010-09-16 17:56 | 講的什么東西!!
          //in.setClassName("com.tigertian.service", "com.tigertian.service.TestService");
          這個(gè)東西到底是給我們的提示還是沒(méi)有用的東西呀,  回復(fù)  更多評(píng)論
            
          # re: Android的Intent和IntentFilter應(yīng)用說(shuō)明一例 2010-09-17 14:26 | 講的什么東西!!
          你這個(gè)代碼調(diào)不通  回復(fù)  更多評(píng)論
            
          # re: Android的Intent和IntentFilter應(yīng)用說(shuō)明一例 2011-03-21 14:55 | gangbener
          你好,我嘗試了之后代碼運(yùn)行均無(wú)誤,但是我想要更加明確的運(yùn)行結(jié)果,因?yàn)榘凑丈厦娴拇a運(yùn)行后只能在DDMS中查看可以正常運(yùn)行,但是并不知道在IntentFilter中設(shè)置的屬性是否起作用了。我是在一個(gè)Activity中實(shí)現(xiàn)的,即,我在一個(gè)名為“intentExample”的Activity的intentExample Menifest文件中寫入了上面三個(gè)intentfilter,并在該Activity中調(diào)用intentExample.this.startActivity(in)。  回復(fù)  更多評(píng)論
            
          # re: Android的Intent和IntentFilter應(yīng)用說(shuō)明一例 2013-02-26 14:30 | zcmain
          精簡(jiǎn)干練 頂。。
            回復(fù)  更多評(píng)論
            
          # re: Android的Intent和IntentFilter應(yīng)用說(shuō)明一例[未登錄](méi) 2013-05-08 23:01 | wang
          # re: Android的Intent和IntentFilter應(yīng)用說(shuō)明一例 2013-08-01 15:27 | 魏滋瓏
          受益了 謝謝LZ 講的這么詳細(xì)  回復(fù)  更多評(píng)論
            
          # re: Android的Intent和IntentFilter應(yīng)用說(shuō)明一例 2013-08-23 16:51 | awander
          簡(jiǎn)明!通透!
          多謝了!  回復(fù)  更多評(píng)論
            
          # re: Android的Intent和IntentFilter應(yīng)用說(shuō)明一例[未登錄](méi) 2013-10-29 16:27 | lee
          @TiGERTiAN
          這是從哪里抄的什么東西的,亂七八糟的。
            回復(fù)  更多評(píng)論
            
          # re: Android的Intent和IntentFilter應(yīng)用說(shuō)明一例[未登錄](méi) 2014-11-12 14:24 | Arlen
          大家不明白的就是IntentFilter,而你并沒(méi)有舉什么例子,看這評(píng)論,大家都看不懂的。。。不過(guò)還是多謝分享。  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 娄烦县| 施甸县| 襄垣县| 庆云县| 巨野县| 石台县| 四会市| 清河县| 德安县| 永泰县| 将乐县| 郓城县| 泗水县| 嵊州市| 漠河县| 阳城县| 麻阳| 英吉沙县| 洪洞县| 汝城县| 嘉兴市| 栾城县| 九龙县| 赫章县| 锡林浩特市| 奉贤区| 响水县| 个旧市| 左权县| 石棉县| 任丘市| 连城县| 临潭县| 金乡县| 伊吾县| 西青区| 金华市| 灵宝市| 开江县| 小金县| 和田市|