1つ:インテントの表示誰もがインテントの表示に非常に熟練していると思うので、
ここでは詳しく説明しません。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,FirstActivity.class);
startActivity(intent);
}
});
最初にIntentFilterマッチングルールについて説明し、次に暗黙のインテントについて説明します。理解しやすくなります。
2:IntentFilter一致ルールIntentFilter
のフィルタリング情報には、アクション、カテゴリ、およびデータが含まれます。
フィルタリングリストを一致させる場合は、フィルタリングリストのアクション、カテゴリ、およびデータ情報を同時に一致させる必要があります。一致しない場合は、マッチングは失敗します。インテントがそれらの1つと一致する限り、アクティビティはIntentFiltersの複数のグループを持つことができ、IntentFiltersのグループは複数のアクション、カテゴリ、データ
1を持つこともできます。
アクション一致ルールアクションは文字列であり、システムによって事前定義されています、そして私たちも傲慢にすることができます。
一致ルール:IntentFiltersのグループは、複数のアクションを持つことができます。IntentのアクションがIntentFilterのアクションのいずれかと一致する限り、成功します。一致が成功すると、文字列が同じになります。文字列では大文字と小文字が区別されます。インテントでアクションが指定されていない場合、一致は失敗します。
2.
カテゴリ一致ルールカテゴリは、システムによって事前定義された文字列であり、自分で定義することもできます。
システムはstartActivityを呼び出すときにデフォルトでインテントを追加するため、インテントはカテゴリを指定しなくても正常に一致できますandroid.intent.category.DEFAULT
が、インテントがカテゴリを指定する場合は、IntentFilterのカテゴリと一致する必要があります。一致しない場合、一致は失敗します。
3.ルール
データに一致するデータは、mimeTypeとURIで構成されます。
mimeTypeは、画像、ビデオ、オーディオなどのメディアタイプを指します。URI
構造は次のとおりです。
<scheme>://<host>:<port>/[<path> | <pathPrefix> | <pathPattern>]
スキーム:http、ファイルなどのURIモード。スキームが指定されていない場合、URIパラメーターは無効です。つまり、URIは無効です。
host:URIのホスト名。hostが指定されていない場合、URIのパラメーターは無効です。つまり、URIは無効です。
ポート:ポート番号、スキームとホストが存在し、合理的である場合のみ、ポートは意味があり
ますパス:完全なパス
pathPrefix:パスプレフィックス情報
pathPattern:完全なパス、ワイルドカードを含めることができます
一致ルール:
インテントはデータを指定する必要があり、IntentFilterのいずれかに一致する必要がありますデータの一致が成功した場合にのみ、それは理にかなっています。
mimeTypeを個別に指定すると、URIのデフォルト値はcontentとfileであるため、URIを知らなくても正常に照合できます。
3:暗黙のインテント
暗黙のインテントは、コンポーネント情報を明確に指す必要があります。暗黙のインテントは、IntentFilterで設定されたフィルタリング情報と一致する必要があります。
まず、マニフェストファイルのアクションとカテゴリをカスタマイズします(インテントと一致する限り、意味のないアクションとカテゴリをカスタマイズできることに注意してください)。
<activity android:name=".FirstActivity">
<intent-filter>
<action android:name="com.example.implicit.Activity"></action>
<category android:name="android.intent.category.DEFAULT"></category>
<category android:name="com.example.implicit.FirstActivity"/>
</intent-filter>
</activity>
次に、ManActivityで暗黙的にインテントします
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.example.implicit.Activity");
intent.addCategory("com.example.implicit.FirstActivity");
startActivity(intent);
}
});
事前定義されたアクションとカテゴリの属性値
アクションとカテゴリの値はカスタマイズできます。Androidシステムには、システムの事前定義されたアクティビティとサービスを開始するための多くの事前定義された定数値も用意されています。
以下に、いくつかの事前定義されたインジケーターを紹介します
Action常量 对应的字符串 说明
ACTION_MIAN android.intent.action.MAIN 应用程序入口
ACTION_VIEW android.intent.action.VIEW 显示指定数据
ACTION_EDIT android.intent.action.EDIT 编辑指定数据
ACTION_DIAL android.intent.action.DIAL 显示拨号面板
ACTION_CALL android.intent.action.CALL 向指定用户打电话
ACTION_SEND android.intent.action.SEND 向其他人发送数据
ACTION_SENDTO android.intent.action.MESSAGE 向其他人发送消息
ACTION_ANSWER android.intent.action.ANSWER 应答电话
ACTION_INSERT android.intent.action.INSERT 插入数据
ACTION_DELETE android.intent.action.DELETE 删除数据
ACTION_RUN android.intent.action.RUN 运行数据
ACTION_SYNC android.intent.action.SYNC 用户数据同步
ACTION_PICK_ACTIVITY android.intent.action.PICK_ACTIVITY 选择Activity
ACTION_SEARCH android.intent.action.SEARCH 执行搜索
ACTION_WEB_SEARCH android.intent.action.WEB_SEARCH 执行Web搜索
Intent类中与Category相关的常量值列表
Category 常量对应的字符串 说明
CATEGORY_DEFAULT android.intent.category.DEFAULT 默认的Category
CATEGORY_TAB android.intent.category.TAB指定Activity 作为TabActivity的Tab页
CATEGORY_LAUNCHER android.intent.category.LAUNCHERActivity 显示在顶级程序列表中
CATEGORY_INFO android.intent.category.INFO 用于提供包信息CATEGORY_HOMEandroid.intent.category.HOME设置该Activity随系统启动而运行
CATEGORY_PREFERENCE android.intent.category.PREFERENCE 设置Activity是参数面板