[セットトップ]Intent filter Action、Categoryプロパティの詳細---インスタンスソースコードが付属
Intentリクエストが1つのデータ上でアクションを実行する場合、Androidはどのアプリケーション(およびコンポーネント)がこのリクエストに応答できるかをどのように知っていますか?Intent Filterは、Activity、Service、Broadcast Receiverを登録するために使用され、あるデータ上で1つの動作を実行できる能力を持っています.
Intent Filterを使用すると、アプリケーションコンポーネントはAndroidに、同じプログラムのコンポーネント、ローカルまたはサードパーティのアプリケーションを含む他のプログラムのコンポーネントの動作要求にサービスを提供することができると伝えます.
アプリケーションコンポーネントをIntentプロセッサとして登録するには、コンポーネントのmanifestノードにintent-filterラベルを追加します.Intent Filterノードでは、次のラベル(関連プロパティ)を使用して、コンポーネントがサポートするアクション、種類、データを指定できます.
1、動作テスト:
ルールa.1つの要素には少なくとも1つのが含まれている必要があります.そうしないと、任意のIntent要求はと一致しません.
以上の要素にはラベルが含まれておらず、任意のIntentリクエストがと一致しません.
ルールb.Intentリクエストのアクションがのいずれかのと一致する場合、そのIntentはこのの動作テストに合格する.の動作テストに合格することができる.
要求1:
Intentリクエストまたはに特定のActionタイプが説明されていない場合、次の2つの状況が発生します.
(1)にアクションタイプが含まれていない場合、どのIntentリクエストもこのと一致しません.(2)逆に、IntentリクエストにActionタイプが設定されていない場合、にActionタイプが含まれている限り、このIntentリクエストはの動作テストにスムーズに合格する.
2、カテゴリテスト
IntentリクエストのすべてのCategoryがコンポーネントのいずれかのIntentFilterのと完全に一致している場合にのみ、そのIntentリクエストがテストに合格し、IntentFilterの余分な宣言はマッチングに失敗しません.カテゴリテストが指定されていないIntentFilterは、カテゴリが設定されていないIntentリクエストにのみ一致します.
以下の3つのIntentリクエストは、上記のカテゴリでテストできます.
要求1:
リクエスト3:
インスタンス部分のソース:
AndroidManifest.xml
MainActivity.JAva(コアコード)
特別注意インスタンスのソースコード(無料):http://download.csdn.net/detail/a13429921973/5720603
Intent Filterを使用すると、アプリケーションコンポーネントはAndroidに、同じプログラムのコンポーネント、ローカルまたはサードパーティのアプリケーションを含む他のプログラムのコンポーネントの動作要求にサービスを提供することができると伝えます.
アプリケーションコンポーネントをIntentプロセッサとして登録するには、コンポーネントのmanifestノードにintent-filterラベルを追加します.Intent Filterノードでは、次のラベル(関連プロパティ)を使用して、コンポーネントがサポートするアクション、種類、データを指定できます.
1、動作テスト:
<activity android:name="com.x210.intentfilters.OneActivity" android:label="oneActivity">
<intent-filter>
<action android:name="myapp.action.test1" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
ルールa.1つの
<activity android:name="com.x210.intentfilters.OtherActivity" android:label="otherActivity">
<intent-filter>
<category android:name="cate1"/>
<category android:name="cate2"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
以上の
ルールb.Intentリクエストのアクションが
<activity android:name="com.x210.intentfilters.OneActivity" android:label="oneActivity">
<intent-filter>
<action android:name="myapp.action.test1" />
<action android:name="myapp.action.test2" />
<action android:name="myapp.action.test3" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
以下のいくつかのIntentリクエストは、上記要求1:
Intent intent = new Intent("myapp.action.test1");
startActivity(intent);
リクエスト2:Intent intent = new Intent("myapp.action.test2");
startActivity(intent);
Intentリクエストまたは
(1)
2、カテゴリテスト
<activity android:name="com.x210.intentfilters.OtherActivity" android:label="otherActivity">
<intent-filter>
<action android:name="myapp.action.test1" />
<category android:name="cate1"/>
<category android:name="cate2"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
IntentリクエストのすべてのCategoryがコンポーネントのいずれかのIntentFilterの
以下の3つのIntentリクエストは、上記
要求1:
Intent intent = new Intent("myapp.action.test1");
intent.addCategory("cate1");
startActivity(intent);
リクエスト2: Intent intent = new Intent("myapp.action.test1");
intent.addCategory("cate2");
startActivity(intent);
リクエスト3:
Intent intent = new Intent("myapp.action.test1");
intent.addCategory("cate1");
intent.addCategory("cate2");
startActivity(intent);
インスタンス部分のソース:
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.x210.intentfilters"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="9" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.x210.intentfilters.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.x210.intentfilters.OneActivity" android:label="oneActivity">
<intent-filter>
<action android:name="myapp.action.test1" />
<action android:name="myapp.action.test2" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name="com.x210.intentfilters.OtherActivity" android:label="otherActivity">
<intent-filter>
<action android:name="myapp.action.test1" />
<category android:name="cate1"/>
<category android:name="cate2"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
MainActivity.JAva(コアコード)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
actionbutton = (Button) findViewById(R.id.ActionButton);
categorybutton = (Button) findViewById(R.id.CategoryButton);
actionbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("myapp.action.test1");
startActivity(intent);
}
});
categorybutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("myapp.action.test1");
intent.addCategory("cate1");
intent.addCategory("cate2");
startActivity(intent);
}
});
}
特別注意インスタンスのソースコード(無料):http://download.csdn.net/detail/a13429921973/5720603