[英]Android Implicit and Explicit Intents
使用隱式意圖與顯式意圖?
對於這個隱含意圖:
Intent searchintent = new Intent()
searchintent.setAction(Intent.ACTION_VIEW)searchintent.setData(Uri.parse(“http://www.google.com”))startActivity(searchintent)
我如何設置另一個動作以及如何將setData與Uri參數以外的其他東西一起使用?
我只是試圖理解兩種類型的意圖。
謝謝
隱式意圖是您想要執行操作但不知道用戶當前有哪些應用程序來處理該操作。 例如,發送電子郵件,有許多應用程序,因此用戶可以選擇他想要使用的應用程序。
顯式意圖用於在應用程序中啟動活動(如果您具有main活動)和secondActivity,並且您希望啟動您調用顯式意圖的第二個活動。
StartActivity(new Intent(getBaseContext(), secondActivity.class));
您可以通過向使用Intent傳遞的bundle添加額外內容來在活動之間傳遞數據。
Intent i = new Intent(getBaseContext, secondActivity.class);
i.putExtra("key",value);
startActivity(i);
要在第二個活動中取回附加功能,請致電:
getIntent().getStringExtra("key");
或者,如果您只想獲得通過的“數據”uri,您可以致電
getIntent().getData();
額外的可以是例如int / double / String或parcable對象
http://developer.android.com/reference/android/os/Parcelable.html
如果您需要完成的操作可以由各種應用程序或不屬於您的應用程序完成,則可以使用隱式intent。 例如,條形碼掃描,聯系人揀選,短信/電子郵件等....
當您想要控制處理意圖的活動時(即,為什么將類定義傳遞給intent),應該使用顯式意圖用法。
意圖只是調用其他活動。 每個活動以下列方式處理此調用(作為您的調用):
1)在OnCreate()方法中,活動正在尋找有效的操作(如在您的調用“ACTION_VIEW”中)。 如果此操作的操作有效且可以調用,則會調用此活動中的函數並“回答”您的請求。 (使用“startActivityForResult”調用時)。
2)將數據設置為Intent:如果被調用的動作需要一些參數,則需要這樣做。 這個參數可以是很多類型,因此它可以是String或Integer作為示例。 您可以將這些類型的數據捆綁在“Bundle”中,並將其放入Intent中。 具有指定操作和數據的被調用活動處理所有這些以及可能的事情,否則會拋出錯誤或者什么。
在您的代碼示例中,您調用打開瀏覽器的活動(因為android系統知道如何使用URL參數處理“ACTION_VIEW”,以及由底層安卓系統定義的系統默認行為。
如果您編寫自己的活動,則可以將公共變量定義為“操作”,並且可以在OnCreate方法中處理,即使使用了所需的參數。
無論它包含什么,明確的意圖總是傳遞給它的目標; 不咨詢過濾器。 但只有當組件可以通過組件的一個過濾器時,才會將隱式意圖傳遞給組件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.