AndroidのIntent
1874 ワード
AndroidのIntentには、意図を表示する、暗黙的な意図の2種類があります.
一、意図を表示する:
表示意図アクティブ化するコンポーネントの完全なパッケージ名とクラス名(アプリケーション間で結合)を指定する必要があります.一般的には、自分が適用するコンポーネントをアクティブ化するときに表示意図を使用します.
選択を意図しているコンポーネントを表示するには、明確にしないでください.例えば、私たちは唯一確定した商品を探しています.
パッケージ名とクラス名を追加する方法は3つあります.setClassはsetClassNameのアップグレード版で、第1パラメータcontextマッピング後にパッケージ名が得られ、第2パラメータclass反射後に完全なクラス名が得られます.
二、暗黙的な意図:
暗黙的な意図は、動作とデータを指定するだけで(利点アプリケーション間に結合がない)、一般的に他の人が書いたアプリケーションを使用して暗黙的な意図を採用し、相手のパッケージ名やクラス名に関心を持つ必要はありません.
暗黙的に選択しようとするコンポーネントは明確ではありません.例えば、100-200、色が白いなどの条件の服を探して、結果は不確定です.
複数の服が検索条件を満たしている場合は、複数の商品が表示されます.
intent-filterでmimeTypeが設定されている場合、dataとtypeを同時に設定することはできません.そうしないと、別のデータが削除されます.
一、意図を表示する:
表示意図アクティブ化するコンポーネントの完全なパッケージ名とクラス名(アプリケーション間で結合)を指定する必要があります.一般的には、自分が適用するコンポーネントをアクティブ化するときに表示意図を使用します.
選択を意図しているコンポーネントを表示するには、明確にしないでください.例えば、私たちは唯一確定した商品を探しています.
パッケージ名とクラス名を追加する方法は3つあります.setClassはsetClassNameのアップグレード版で、第1パラメータcontextマッピング後にパッケージ名が得られ、第2パラメータclass反射後に完全なクラス名が得られます.
Intent intent = new Intent();
intent.setClass(this, XutilsDownLaodActivity.class);//context,class
intent.setClassName("com.zhangyan.test", "com.zhangyan.test.IntentActivity"); // ,
intent.setClassName(this, "com.zhangyan.test.IntentActivity");//context,
二、暗黙的な意図:
暗黙的な意図は、動作とデータを指定するだけで(利点アプリケーション間に結合がない)、一般的に他の人が書いたアプリケーションを使用して暗黙的な意図を採用し、相手のパッケージ名やクラス名に関心を持つ必要はありません.
暗黙的に選択しようとするコンポーネントは明確ではありません.例えば、100-200、色が白いなどの条件の服を探して、結果は不確定です.
複数の服が検索条件を満たしている場合は、複数の商品が表示されます.
<activity android:name="com.zhangyan.test.IntentActivity">
<intent-filter>
<action android:name="com.zhangayn.daren"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="application/haoren"/>
<data android:scheme="daren"/>
</intent-filter>
</activity>
intent-filterでmimeTypeが設定されている場合、dataとtypeを同時に設定することはできません.そうしないと、別のデータが削除されます.
Intent intent = new Intent();
intent.setAction("com.zhangayn.daren");
intent.addCategory(Intent.CATEGORY_DEFAULT);
//intent.setData(Uri.parse("daren: "));
//intent.setType("application/haoren");
intent.setDataAndType(Uri.parse("daren: "), "application/haoren");
startActivity(intent);