「android.intent.category.DEFAULT」の目的は何ですか?


103

android.intent.category.DEFAULTインテントフィルターのカテゴリフィールドで使用する目的は何ですか?


2
これは、アプリケーションのデフォルトのエントリポイントです。参照:developer.android.com/reference/android/content/...
ブランデル

@Blundell:暗黙のインテントが到着した場合、インテントフィルターのカテゴリとしてデフォルトのアクティビティが呼び出されますか?
Pravy

1
これが「パッケージで指定されたインテントフィルターで使用するためのものです」を使用するアクティビティであることを暗示するために使用されていると思います
Blundell

複数のアクティビティにカテゴリとしてデフォルトが含まれている場合、それぞれのインテントフィルタで、どのアクティビティが呼び出されますか?
Pravy

それらが異なるインテントフィルターを持っている場合、それはインテントに依存します。
Blundell 2011

回答:


112

カテゴリは暗黙的なインテントに使用されます。したがって、他の特定のカテゴリがアクティビティに割り当てられていないときに、暗黙のインテントによってアクティビティを開始できる場合、アクティビティのインテントフィルタにこのカテゴリを含める必要があります。(インテントフィルターに他のカテゴリがある場合でも)。アクティビティを他のカテゴリで呼び出す必要があると確信している場合は、デフォルトを使用しないでください。

カテゴリをデフォルトに設定しても、アプリの起動時にこのアクティビティがデフォルトで使用されるわけではありません。活動は、単に「というシステムに言うああ、私はスターターテントのカテゴリに設定されている場合でも、起動することができ何もすべてで!


27
これは実際には理解できる説明でした。この回答をドキュメントと比較してください:「アクティビティが、データに対して実行するデフォルトのアクション(センタープレス)のオプションかどうかを設定します。これを設定すると、一部のアクションを実行するときに、アクティビティが設定されていないアクティビティはユーザーから非表示になります。データ」わかりやすい説明を書くのはどれほど難しいのか...
Andreas

インテントフィルターのないアクティビティは暗黙のアクティビティとして呼び出される可能性があるため、オプションである可能性があるため、その権限については
わかりません

6
ドキュメントがより明確になりましたIMO:Androidは、CATEGORY_DEFAULTカテゴリを、startActivity()およびstartActivityForResult()に渡されるすべての暗黙的インテントに自動的に適用します。したがって、アクティビティに暗黙のインテントを受信させる場合は、インテントフィルターに「android.intent.category.DEFAULT」のカテゴリを含める必要があります。
shkschneider

2
@humblerookie。私はそれを試してみましたが、DEFAULTカテゴリーなしでは機能しません。信じられない場合は、自分でテストしてください。
Bob Ueland

2
すべてのチュートリアルがこのように記述されている場合のみ。2018でまだ木製の言語を使用しているのはなぜですか?
SudoPlz 2018年

24

このカテゴリは、主に暗黙的インテントに使用されます。暗黙的なインテントでアクティビティを開始したい場合は、フィルターにこのカテゴリを含める必要があります。

「デフォルト」という言葉は「デフォルト候補」として理解されるべきだと思います。データの一部に対するアクションが複数のアクティビティに解決される場合、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 "をカテゴリのリストに含めますが、必須ではありません。)


@Comptrol、あなたの答えはもはや下ではありません。上昇しています。:-)
Ellen Spertus 14年

はい。ただし、元の状態に戻しました。ですから、全体としては、何も変更しませんでした。
Özgür

1
この答えは、現在の状況を理解するインテントフィルターに役立つと思います。ありがとうございました。
ネオンワージ2015

1

実際には、アプリの実行中に他のアクティビティを呼び出せるようにする必要があります。LAUNCHERは、それを含むアクティビティを最初に開始するアクティビティにします。他のアクティビティに到達するためにインテントを使用するには、DEFAULTを指定して、それらを「実際の」アクティビティとしてリストする必要があります。それは私が知っていることなので、間違っている場合は引用しないでください。


3
あなたはあなたの主張の参照を提供するよう努めるべきです。「間違っている場合は引用しないでください」では、このルールを上書きできません。
verybadalloc 2013

私が持っているリファレンスは、Androidコーディングについて勉強しているときに取り組んだプロジェクトです。ソースファイルが必要な場合は、送信させていただきます。
CHT 2013

1

アクティビティは、Context.startActivity()で見つけられるように、CATEGORY_DEFAULTをサポートする必要があります。

暗黙的なインテントを受信するには、CATEGORY_DEFAULTカテゴリをインテントフィルターに含める必要があります。メソッドstartActivity()およびstartActivityForResult()は、すべてのインテントをCATEGORY_DEFAULTカテゴリを宣言したかのように扱います。インテントフィルターで宣言しない場合、暗黙のインテントはアクティビティを解決しません。


0

一部の操作をデフォルトのアクションとして宣言するために使用されます(その名前が示すとおり)。メモ帳アプリ(android notepadサンプルを参照)があるとしましょう。アプリの最初のページは、すべてのメモ帳ファイルのリストで構成されています。1つのメモ帳ファイルを選択すると、メモの編集、メモの削除などの操作を実行できます。しかし、私はデフォルトのアクションとして編集を行いたいのです。つまり、キーパッドの中央ボタンを押すと、編集ウィンドウが開くはずです。


1
:あなたはAndroidのメモ帳の例を見れば、すべての活動は、デフォルトとしてマークされているdeveloper.android.com/reference/android/content/Intent.html
ピーターAjtai

0

https://developer.android.com/guide/components/intents-filters

暗黙的なインテントを受け取るには、インテントフィルターにCATEGORY_DEFAULTカテゴリを含める必要があります。メソッドstartActivity()およびstartActivityForResult()は、すべてのインテントをCATEGORY_DEFAULTカテゴリを宣言したかのように扱います。このカテゴリをインテントフィルタで宣言しない場合、暗黙的なインテントはアクティビティを解決しません。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.