一触趴、實驗目的
1.掌握Android中Intent的顯示調(diào)用和隱式調(diào)用
2.掌握意圖過濾器(Intent Filter)的使用和過濾原則
二、實驗原理
1、Intent分為顯示調(diào)用和隱式調(diào)用
2、隱式調(diào)用Intent時抛人,Intent對象的Action、Category脐瑰、Data等屬性要與意圖過濾器(Intent Filter)的相匹配妖枚。
匹配原則:
1)Intent具有的Action,意圖過濾器必須有
2)Intent具有的所有Category苍在,意圖過濾器必須都有绝页。也就是:意圖過濾器只多不少
3)當Intent中沒有包含任何URI和MIMETYPE時,只有過濾器沒有定義任何URI和MIMETYPE時才能通過測試.
4)當Intent只包含URI沒有包含MIMETYPE時,只有Intent中的URI匹配過濾器的URI且過濾器沒有定義MIMETYPE時通過測試.
5)當Intent只包含MIMETYPE時,只有Intent中的MIMETYPE匹配過濾器的MIMETYPE且過濾器沒有定義URI時通過測試.
6)當Intent同時包含URI和MIMETYPE時,這時進行兩部分測試,一是測試Intent中的MIMETYPE和過濾器中的MIMETYPE是否匹配,二是測試URI是否匹配,如果過濾器沒有定義URI,那么當Intent中的URI包含"file:"或"content:"時通過測試.特別注意,如果過濾器有定義URI,即使Intent中的URI包含"file:"或"content:"也不能通過測試,必須匹配才行.
三、實驗過程
1.本實驗創(chuàng)建各兩個activity寂恬、布局文件和修改AndroidManifest.xml文件续誉。
①第一個activity點擊按鈕創(chuàng)建一個隱式intent,設(shè)置action和category并執(zhí)行初肉。
②第二個activity顯示一個textview酷鸦。
③AndroidManifest.xml文件將要注冊第二個activity,添加intent-filter和配置action和category牙咏;
2.實驗主要代碼
AndroidManifest.xml
xml version="1.0"encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.example.hp.intent_filter">
<applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme">
<activityandroid:name=".MainActivity">
<intent-filter>
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
intent-filter>
activity>
<activityandroid:name=".Main2Activity">
<intent-filter>
<actionandroid:name="android.intent.action.DIAL"/>
<categoryandroid:name="android.intent.category.DEFAULT"/>
intent-filter>
activity>
application>.
manifest>
MainActivity.java
packagecom.example.hp.intent_filter;
importandroid.content.Intent;
importandroid.support.v7.app.AppCompatActivity;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.widget.Button;
public classMainActivityextendsAppCompatActivity {
@Override
protected voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button a=(Button) findViewById(R.id.button);
a.setOnClickListener(newView.OnClickListener() {
@Override
public voidonClick(View v) {
Intent intent=newIntent();
intent.setAction(Intent.ACTION_DIAL);//為intent設(shè)置actionIntent chooser =Intent.createChooser(intent,"選擇");//創(chuàng)建一個必須通過選擇才能執(zhí)行的隱式意圖startActivity(chooser);
}
});
}
}
3.實驗結(jié)果
四臼隔、思考并回答以下問題
1、簡述Intent隱式調(diào)用和顯式調(diào)用的區(qū)別妄壶。
隱式-通過intent-filter來讓系統(tǒng)選擇符合執(zhí)行這個intent的應用摔握。(不同應用間交互)
顯式-組件名稱來執(zhí)行這個intent(應用內(nèi)部交互)
2、簡述意圖過濾器(Intent Filter)的作用盯拱?
幫助發(fā)出"意圖"的組件更快盒发、更準確找到所需的組件例嘱,使不同的應用能實現(xiàn)交互狡逢。