Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 高級開發 >> 闡述Android Intent使用整理問題

闡述Android Intent使用整理問題

編輯:高級開發

在進行對android Intent匹配的前提是要匹配Intent的幾項值:Action, Category, Data/Type,Component如果填寫了Componet就是上例中的Test.class)這就形成了顯示匹配,匹配規則為最大匹配規則。

1,如果你填寫了Action,如果有一個程序的Manifest.XML中的某一個Activity的IntentFilter段中定義了包含了相同的Action那麼這個Intent就與這個目標Action匹配。如果這個Filter段中沒有定義Type,Category,那麼這個Activity就匹配了。但是如果手機中有兩個以上的程序匹配,那麼就會彈出一個對話可框來提示說明。

  • 深度說明android 程序轉換
  • 詳述android 插件相關問題
  • 進行對android應用程序全解析
  • android應用程序入門到精通
  • 深度剖析android應用程序的四種構造塊

Action的值在android中有很多預定義,如果你想直接轉到你自己定義的Intent接收者,你可以在接收者的android Intentr中加入一個自定義的Action值(同時要設定Category值為"android.intent.category.DEFAULT")。在你的android Intent中設定該值為Intent的Action,就直接能跳轉到你自己的Intent接收者中。因為這個Action在系統中是唯一的。

2,data/type,你可以用Uri來做為data,比如Uri uri = Uri.parse(http://www.google.com);Intent i = new Intent(Intent.ACTION_VIEW,uri);手機的Intent分發過程中,會根據http://www.google.com 的scheme判斷出數據類型type。手機的Brower則能匹配它,在Brower的Manifest.XML中的IntenFilter中首先有ACTION_VIEW Action,也能處理http:的type。

3,至於分類Category,一般不要去在Intent設置它,如果你寫Intent的接收者,就在Manifest.XML的Activity的IntentFilter中包含android.category.DEFAULT,這樣所有不設置Category(Intent.addCategory(String c);)的Intent都會與這個Category匹配。

4,extras(附加信息),是其它所有附加信息的集合。使用extras可以為組件提供擴展信息,比如,如果要執行“發送電子郵件”這個動作,可以將電子郵件的標題、正文等保存在extras裡,傳給電子郵件發送組件。

例子代碼:

  1. public class HelloActivity extends Activity {
  2. @Override
  3. public boolean onCreateOptionsMenu(Menu menu) {
  4. // TODO Auto-generated method stub
  5. super.onCreateOptionsMenu(menu);
  6. menu.add(0, Menu.FIRST+1, 1, R.string.menu_open);
  7. menu.add(0, Menu.FIRST+2, 2, R.string.menu_edit);
  8. menu.add(0, Menu.FIRST+3, 3, R.string.menu_update);
  9. menu.add(0, Menu.FIRST+4, 4, R.string.menu_close);
  10. return true;
  11. }
  12. @Override
  13. public boolean onOptionsItemSelected(MenuItem item) {
  14. // TODO Auto-generated method stub
  15. super.onOptionsItemSelected(item);
  16. switch(item.getItemId())
  17. {
  18. case Menu.FIRST + 1:
  19. {
  20. this.setTitle("Open Text!");
  21. Intent i = new Intent();
  22. i.setAction("test_action");
  23. if (Tools.isIntentAvailable(this,i))
  24. this.startActivity(i);
  25. else
  26. this.setTitle("the Intent is unavailable!!!");
  27. break;
  28. }
  29. case Menu.FIRST + 2:
  30. {
  31. this.setTitle("Edit Text!");
  32. break;
  33. }
  34. case Menu.FIRST + 3:
  35. {
  36. this.setTitle("Update Text!");
  37. break;
  38. }
  39. case Menu.FIRST + 4:
  40. {
  41. this.setTitle("Close Text!");
  42. break;
  43. }
  44. }
  45. return true;
  46. }
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved