AndroidのIntent

1874 ワード

AndroidのIntentには、意図を表示する、暗黙的な意図の2種類があります.
一、意図を表示する:
表示意図アクティブ化するコンポーネントの完全なパッケージ名とクラス名(アプリケーション間で結合)を指定する必要があります.一般的には、自分が適用するコンポーネントをアクティブ化するときに表示意図を使用します.
選択を意図しているコンポーネントを表示するには、明確にしないでください.例えば、私たちは唯一確定した商品を探しています.
パッケージ名とクラス名を追加する方法は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);