blog

Android開発チュートリアル7:インテントとインテント・フィルター

Androidアプリケーションの3つのコア・コンポーネントであるサービスとブロードキャスト・レシーバーは、「インテント」と呼ばれるメッセージによって起動されます。インテント自体は、実行されるアクション...

Jul 5, 2025 · 4 min. read
シェア

Intent本身为一个数据载体,可以描述想要执行的操作以及用于这个操作的数据和其它属性。用个容易理解的概念,在访问网站时,需要提供网站的 URL,有时还需要通过URL参数,在Android世界里,Intent 的功能类似于URL,Android操作系统根据Intent来触发对于的Activitives,Services或是Broadcast Receivers。

下面来看看Android OS如何根据Intent来找到满足触发条件的Activity,Service或是Broadcast Receiver.  借用SQL 数据库的概念可以更好的理解。

     SELECT AS Target

     FROM 

     WHERE Intent Meet Target’s

Intent

Intent本身为一个数据载体,可以描述想要执行的操作以及用于这个操作的数据和其它属性。它主要包含下列信息:

Action: 列出需要执行的操作名称。或者在Broadcast Intents的情况下给出发生的事件名称。

Constant Target component Action
ACTION_CALL activity 電話の開始.
ACTION_EDIT activity 電話の開始.
ACTION_MAIN activity
ACTION_SYNC activity 電話の開始.
ACTION_BATTERY_LOW broadcast receiver 电池电量低告警.
ACTION_HEADSET_PLUG broadcast receiver 耳机插入或拔出.
ACTION_SCREEN_ON broadcast receiver 屏幕打开或关闭.
ACTION_TIMEZONE_CHANGED broadcast receiver 时区变动.

Data:定义不数据的URL以及数据的MIME类型。不同的Action能够处理的Data类型也不一样,比如 ACTION_CALL,它处理的数据格式为tel: URI,URI为电话号码。

Category: 定义了可以响应Intent的附加信息,一个Intent可以指定多个Category类型。和Action类似,Android 预定义了一些Category类型:

Extra:  附加Key-Value列表,可以向目标Activity传送附加参数。可以理解成函数调用时的参数。

Flags:指出Android启动目标Activity时的一些选项。

Intent Filters

Android中没个有效的Activity,Service,Broadcast Receiver都必须在AndroidManifest.xml有对应的定义。除非只使用明确调用发生来启动目标Activity,每个 Activity都需要定义一个intent-filter。下面是是明确指定目标Activity的示例代码:

Intent intent=new Intent(SplashActivity.this,GNavigator.class); 
startActivity(intent); 

而更一般的情况,Activity在AndroidManifest.xml具有如下定义:

<activity android:name=”.AndroidGISEngineTutorial” 
    android:label=”@string/app_name”> 
 <intent-filter> 
  <action android:name=”android.intent.action.MAIN” /> 
  <action android:name=”com.example.project.SHOW_CURRENT” />    
  <action android:name=”com.example.project.SHOW_RECENT” />    
  <action android:name=”com.example.project.SHOW_PENDING” /> 
   
   . 
  <category android:name=”android.intent.category.DEFAULT” />    
  <category android:name=”android.intent.category.BROWSABLE” /> 
    
   <data android:mimeType=”video/mpeg” android:scheme=”http” . . . />     
   <data android:mimeType=”audio/mpeg” android:scheme=”http” . . . /> 
    . 
 </intent-filter> 
</activity> 

最常见的一个Intent Filter组合如下:

<intent-filter . . . >    
   <action android:name=”code android.intent.action.MAIN” />    
   <category android:name=”code android.intent.category.LAUNCHER” /> 
  </intent-filter> 

表示用户可以从Android设备的应用程序管理器启动该Activity,这个Activity为应用的主Activity,主Activity可以再使用Intent触发或是启动其它Activity。

Read next

陝西北嘉:システム運用・保守でソリューションの価値を示す

業界市場では、ITシステムのその後の運用・保守を考えず、初期段階での構築に注力するユーザーが多いという共通の現象があります。この「保守より構築」というアプローチは、どのような結果をもたらすのでしょうか?

Jul 5, 2025 · 3 min read