您好,登錄后才能下訂單哦!
一.綜述
intent對象是一個信息桶。它包含了接收它的組件感興趣的信息(如:攜帶的動作和數據),附加Android系統感興趣的信息(如:處理intent和啟動目標Activity指令的組件的類別)
程序的3個核心組件——Activity、services、廣播接收器——是通過intent傳遞消息的。intent消息對于運行時綁定不同的組件是很方便的,這些組件可以是同一個程序也可以是不同的。一個intent對象,是一個被動的數據結構,它保存了一個操作的抽象描述——或通常是一個廣播的實例,一些發生的事情的描述,一個通知。傳遞intent到不同組件的機制是互不相同的。
intent對象是傳遞給Context.startActivity() 或Activity.startActivityForResult() 以啟動Activity或是讓一個存在的Activity做些事情。(也可以傳遞給Activity.setResult()來返回Activity的信息,這個函數叫startActivityForResult()。)
intent對象傳遞給函數來初始化一個service或是分發一個新的指令給一個正在進行的service。同樣,intent傳遞給來建立一個在調用組件和目標service間的聯系。如果一個service沒有運行,它可以開始它。
intent可以傳遞給任何廣播函數(如:Context.sendBroadcast()、Context.sendOrderedBroadcast()、 Context.sendStickyBroadcast()),intent被分派給所有感興趣的廣播接收者。很多廣播源在系統內核里。
Android系統會尋找合適的Activity、service或設置廣播接收器來響應intent,在需要的時候實例化它們。在消息系統里沒有交疊:廣播intent僅僅分派給廣播接收器,不會分派給Activity或service。一個intent分派給startActivity()僅僅分派給Activity,不會分派給service或廣播接收器,等等。
二.Intent關聯的東西
@1四大組件Activity,Brocast,Service,Receiver,intent可以在四大組件中傳遞消息和數據。
@2動作Action,通過 setAction()函數設置,通過getAction()函數讀取
@3數據Data,數據的URI和MIME類型的數據,setData() 函數指定數據作為一個URI, setType()指定它為一個MIME類型,setDataAndType()指定它是URI也是MIME類型。 getData()函數讀取URI, getType()讀取類型
@4類型addCategory() 放置一個intent里的類別,removeCategory()刪除之前添加的,getCategories()獲取當前所有的類別。
@5擴展,intent有一系列的put...() 函數來插入各種類型的數據和一系列get...()函數來獲取各種類型的數據。對Bundle 對象,這些函數是并行的。事實上,可以使用函數putExtras()和函數getExtras()來把數據作為Bundle讀取、插入
@6標志,各種排序的標志。指示Android如何啟動Activity(例如:Activity屬于那個任務)啟動后如何處理(例如:是否屬于現在Activity 的列表)。這些標志在intent類里定義。
和平臺相關的Android系統和程序使用intent來發送系統的廣播、激活系統定義的組件。和intent激活系統組件相關的內容,在list of intents
三.Intent的分類
1.顯示意圖Intent
/** * 顯示意圖開啟activity * * @param view */ public void see(View view) { Intent intent = new Intent(this,MyActivity.class); startActivity(intent); }
2.隱式意圖Intent
實例程序:
@1開啟本應用的Activity
= Intent("com.market.textintent.MY""huihui:"+123456),"pp/my"
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.market.testintent"> <uses-permission android:name="android.permission.SEND_SMS" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name="market.testintent.MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="market.testintent.MyActivity"> <intent-filter> <action android:name="com.market.textintent.MY"/> <category android:name="android.intent.category.DEFAULT"/> <data android:scheme="huihui"/> <data android:mimeType="pp/my"/> </intent-filter> </activity> </application></manifest>
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:gravity="center_horizontal" android:padding="20dp" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="測試Intent" /> <Button android:onClick="send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="發短信" /> <Button android:onClick="start" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="startMyActivity" /> <Button android:onClick="see" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="顯示意圖" /></LinearLayout>
@2開啟系統應用Activity
/** * y隱式意圖發短信 * * @param view */ public void send(View view) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW ); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setType("vnd.android-dir/mms-sms"); intent.putExtra("sms_body","美女,你吃飯了沒?"); startActivity(intent); }
短信應用清單文件activity配置
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。