隨筆-348  評論-598  文章-0  trackbacks-0
          很多人對文檔中的Intent和IntentFilter不理解是什么意思,我這里舉例解釋下。
          Intent字面意思就是目標,目的。通俗一點,需要達成某些目標,則需要提供一些動作,這些目標的分類,以及達成這些目標所需要的一些數據等等。Android中的Intent通過Action,Category和data等屬性進行了相應的描述,我們想做某些事情(達成某些目標),就需要填寫這些參數的部分或全部,這樣Android才會幫助我們自動的去進行某些操作。
          IntentFilter是配合Intent而生的,你有目標行動或者結果,那么那些行動和結果就會有他完成的特定要求,這些要求就是IntentFilter,可以理解為Intent和IntentFilter是相對應的。
          <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有三個Filter,第一個是給Android系統用的,表示這個Activity可以顯示在桌面上(Launcher中)。同時Alternative表明,這個Activity可以
          變成OptionMenu,供其他Activity直接調用。
          后面兩個Filter就是我自定義的了,第二個Filter可以在其他Activity中用如下方法直接調用:
                          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是不可缺少的,想調用這個Service,可以不指定Class,但其他條件必須匹配(CATEGORY_DEFAULT可以不設置,Android默認會自動加上),通過Action,category和data就可以調用相應的Activity了,這是Android幫你做的,當然如果系統中存在多個匹配這些條件的Activity或者Service,Android根據優先級進行調用。
          第三個調用方式如下:
                          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);
          看到沒有?可以不指定CATEGORY_DEFAULT,Android自動幫你添加。就是這么簡單。

          ---------------------------------------------------------
          專注移動開發

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

          評論:
          # re: Android的Intent和IntentFilter應用說明一例 2010-09-16 17:30 | 講的什么東西!!
          IntentFilter是配合Intent而生的,你有目標行動或者結果,那么那些行動和結果就會有他完成的特定要求,這些要求就是IntentFilter,可以理解為Intent和IntentFilter是相對應的。
          后面的列子也看不懂!  回復  更多評論
            
          # re: Android的Intent和IntentFilter應用說明一例 2010-09-16 17:32 | TiGERTiAN
          @ 講的什么東西!!
          你一點都不學習,當然看不懂了。  回復  更多評論
            
          # re: Android的Intent和IntentFilter應用說明一例 2010-09-16 17:56 | 講的什么東西!!
          //in.setClassName("com.tigertian.service", "com.tigertian.service.TestService");
          這個東西到底是給我們的提示還是沒有用的東西呀,  回復  更多評論
            
          # re: Android的Intent和IntentFilter應用說明一例 2010-09-17 14:26 | 講的什么東西!!
          你這個代碼調不通  回復  更多評論
            
          # re: Android的Intent和IntentFilter應用說明一例 2011-03-21 14:55 | gangbener
          你好,我嘗試了之后代碼運行均無誤,但是我想要更加明確的運行結果,因為按照上面的代碼運行后只能在DDMS中查看可以正常運行,但是并不知道在IntentFilter中設置的屬性是否起作用了。我是在一個Activity中實現的,即,我在一個名為“intentExample”的Activity的intentExample Menifest文件中寫入了上面三個intentfilter,并在該Activity中調用intentExample.this.startActivity(in)。  回復  更多評論
            
          # re: Android的Intent和IntentFilter應用說明一例 2013-02-26 14:30 | zcmain
          精簡干練 頂。。
            回復  更多評論
            
          # re: Android的Intent和IntentFilter應用說明一例[未登錄] 2013-05-08 23:01 | wang
          垃圾  回復  更多評論
            
          # re: Android的Intent和IntentFilter應用說明一例 2013-08-01 15:27 | 魏滋瓏
          受益了 謝謝LZ 講的這么詳細  回復  更多評論
            
          # re: Android的Intent和IntentFilter應用說明一例 2013-08-23 16:51 | awander
          簡明!通透!
          多謝了!  回復  更多評論
            
          # re: Android的Intent和IntentFilter應用說明一例[未登錄] 2013-10-29 16:27 | lee
          @TiGERTiAN
          這是從哪里抄的什么東西的,亂七八糟的。
            回復  更多評論
            
          # re: Android的Intent和IntentFilter應用說明一例[未登錄] 2014-11-12 14:24 | Arlen
          大家不明白的就是IntentFilter,而你并沒有舉什么例子,看這評論,大家都看不懂的。。。不過還是多謝分享。  回復  更多評論
            
          主站蜘蛛池模板: 理塘县| 合山市| 潮安县| 贵溪市| 南靖县| 乡宁县| 普兰县| 澄江县| 安泽县| 吴川市| 安国市| 莱阳市| 资中县| 宜宾市| 从江县| 苗栗市| 古交市| 海宁市| 桦川县| 苏州市| 安泽县| 读书| 孟连| 巴马| 天祝| 六枝特区| 张掖市| 富宁县| 诏安县| 中宁县| 武宣县| 兴隆县| 阳西县| 太仆寺旗| 吴忠市| 敦化市| 拜泉县| 垫江县| 贡山| 宿迁市| 禹城市|