android.intent.category.DEFAULTインテントフィルターのカテゴリフィールドで使用する目的は何ですか?
android.intent.category.DEFAULTインテントフィルターのカテゴリフィールドで使用する目的は何ですか?
回答:
カテゴリは暗黙的なインテントに使用されます。したがって、他の特定のカテゴリがアクティビティに割り当てられていないときに、暗黙のインテントによってアクティビティを開始できる場合、アクティビティのインテントフィルタにこのカテゴリを含める必要があります。(インテントフィルターに他のカテゴリがある場合でも)。アクティビティを他のカテゴリで呼び出す必要があると確信している場合は、デフォルトを使用しないでください。
カテゴリをデフォルトに設定しても、アプリの起動時にこのアクティビティがデフォルトで使用されるわけではありません。活動は、単に「というシステムに言うああ、私はスターターテントのカテゴリに設定されている場合でも、起動することができ何もすべてで!」
このカテゴリは、主に暗黙的インテントに使用されます。暗黙的なインテントでアクティビティを開始したい場合は、フィルターにこのカテゴリを含める必要があります。
「デフォルト」という言葉は「デフォルト候補」として理解されるべきだと思います。データの一部に対するアクションが複数のアクティビティに解決される場合、Androidはすべての候補をユーザーに提示し、ユーザーは自分の好みのデフォルトを選択できます。
参照:
http://developer.android.com/guide/components/intents-filters.html
そのページから抜粋:
Androidは、startActivity()に渡されたすべての暗黙的インテントが、少なくとも1つのカテゴリ「android.intent.category.DEFAULT」(CATEGORY_DEFAULT定数)を含んでいるかのように扱います。したがって、暗黙的なインテントを受け取ることをいとわないアクティビティは、インテントフィルターに「android.intent.category.DEFAULT」を含める必要があります。(「android.intent.action.MAIN」および「android.intent.category.LAUNCHER」設定のフィルターは例外です。これらは、新しいタスクを開始し、ランチャー画面に表示されるアクティビティをマークします。「android.intent .category.DEFAULT "をカテゴリのリストに含めますが、必須ではありません。)
実際には、アプリの実行中に他のアクティビティを呼び出せるようにする必要があります。LAUNCHERは、それを含むアクティビティを最初に開始するアクティビティにします。他のアクティビティに到達するためにインテントを使用するには、DEFAULTを指定して、それらを「実際の」アクティビティとしてリストする必要があります。それは私が知っていることなので、間違っている場合は引用しないでください。
一部の操作をデフォルトのアクションとして宣言するために使用されます(その名前が示すとおり)。メモ帳アプリ(android notepadサンプルを参照)があるとしましょう。アプリの最初のページは、すべてのメモ帳ファイルのリストで構成されています。1つのメモ帳ファイルを選択すると、メモの編集、メモの削除などの操作を実行できます。しかし、私はデフォルトのアクションとして編集を行いたいのです。つまり、キーパッドの中央ボタンを押すと、編集ウィンドウが開くはずです。
https://developer.android.com/guide/components/intents-filters
暗黙的なインテントを受け取るには、インテントフィルターにCATEGORY_DEFAULTカテゴリを含める必要があります。メソッドstartActivity()およびstartActivityForResult()は、すべてのインテントをCATEGORY_DEFAULTカテゴリを宣言したかのように扱います。このカテゴリをインテントフィルタで宣言しない場合、暗黙的なインテントはアクティビティを解決しません。
カテゴリー:
android.intent.category.DEFAULT
暗黙のインテントに一致します。アクティビティが暗黙のインテントを受け取るには、このカテゴリを含める必要があります。