web-dev-qa-db-ja.com

AndroidのIntentとは何ですか?

  • Androidの インテント とは何ですか?
  • 誰かが例を挙げて詳述できますか?
  • インテントの種類は何ですか、またなぜインテントを使用しているのですか。
  • なぜAndroidでインテントがそんなに重要なのですか?
330
Nikunj Patel

Intent は、アクションを実行する「意図」です。言い換えると、

別のアクションをリクエストするために使用できるメッセージングオブジェクト アプリコンポーネント

インテントは基本的に、あなたがしたこと、または何かをしたいというメッセージです。意図によっては、アプリまたはOSがそれをリッスンしている可能性があり、それに応じて反応します。これは、友人のジョンに何かをするように、またはXを行うことができる友人( "intent filters" )にXを行うように命じる多数の友人への爆発的なメールと考えてください。他の人は電子メールを無視しますが、ジョン(またはXを実行できる友人)はそれに反応します。

ブロードキャストインテント(電話の呼び出し音、またはSMSが受信されるなど)をリッスンするには、インテントに渡される broadcast receiver を実装します。 「写真を撮る」などの別のアプリの意図を処理できることを宣言するには、 アプリのマニフェストファイルの意図フィルター を宣言します。

ダイヤラをポップアップするなど、何かをする目的を実行したい場合は、 intent from fire と言います。

475
Chirag

インテントとは何ですか?

Intentは、基本的にcomponentsActivitiesServices、Broadcast Receivers、、およびContent Providers)。したがって、API呼び出しに渡されるパラメーターとほぼ同等です。 API呼び出しとインテントを介したコンポーネントの呼び出しの基本的な違いは次のとおりです。

  • API呼び出しは同期ですが、インテントベースの呼び出しは非同期です。
  • API呼び出しはコンパイル時バインディングですが、インテントベースの呼び出しはランタイムバインディングです。

もちろん、後で説明するexplicit intentsと呼ばれるものを使用することにより、API呼び出しとまったく同じようにインテントを機能させることができます。しかし、多くの場合、 implicitintents が道であり、それがここで説明されています。

別のコンポーネントを呼び出したいコンポーネントは、そのintentを表現するだけでジョブを実行できます。存在し、 intent-filters を介してこのようなジョブを実行できると主張している他のコンポーネントは、Androidプラットフォームによって呼び出されます仕事を達成するために。つまり、どちらのコンポーネントも互いの存在を認識していませんが、エンドユーザーに望ましい結果を提供するために連携することができます。

コンポーネント間のこの目に見えない接続は、インテント、インテントフィルター、およびAndroidプラットフォームの組み合わせによって実現されます。

これは、次のような大きな可能性につながります。

  • 実行時にコンポーネントを組み合わせて使用​​するか、プラグアンドプレイします。
  • 組み込みのAndroidアプリケーションをカスタム開発アプリケーションに置き換えます。
  • アプリケーション内およびアプリケーション間でのコンポーネントレベルの再利用。
  • 私が言うことができる場合、最も詳細なレベルへのサービス指向。

Androidドキュメントからの意図 に関する追加の技術的詳細を以下に示します。

インテントは、実行される操作の抽象的な記述です。 startActivityとともに使用してActivity、broadcastIntentを起動し、関心のあるBroadcastReceiverコンポーネントに送信できます。 、およびstartService(Intent)またはbindService(Intent、ServiceConnection、int)は、バックグラウンドサービスと通信します。

インテントは、異なるアプリケーションのコード間で実行時バインディングを実行する機能を提供します。その最も重要な使用法は、アクティビティの起動であり、アクティビティ間の接着剤と考えることができます。基本的に、実行されるアクションの抽象的な記述を保持する受動的なデータ構造です。インテントの主要な情報は次のとおりです。

  • action実行される一般的なアクション(ACTION_VIEW、ACTION_EDIT、ACTION_MAINなど).
  • dataUriで表される連絡先データベースの個人レコードなど、操作するデータ。

もっと詳しく知る

158
mr.boyfox

インテントはAndroidにあなたがしたいことを伝える方法です。言い換えれば、あなたはあなたの意図を説明します。インテントを使用して、特定のイベントが発生したことをAndroidシステムに知らせることができます。 Androidの他のコンポーネントは、インテントフィルタを介してこのイベントに登録できます。

以下は2種類のインテント

1.明示的な意図

特定のコンポーネントを呼び出すために使用されます。起動したいコンポーネントがわかっていて、どのコンポーネントを使用するかをユーザーに自由に制御させたくない場合。たとえば、2つのアクティビティを持つアプリケーションがあります。アクティビティAとアクティビティB。アクティビティAからアクティビティBを起動するとします。この場合は、activityBをターゲットとする明示的なインテントを定義し、それを使用して直接呼び出します。

2.暗黙の目的

何をしたいのかわかっているときに使用されますが、どのコンポーネントを起動する必要があるかわかりません。あるいは、ユーザーに使用するコンポーネントのリストから選択するためのオプションを与えたい場合。これらのインテントがAndroidシステムに送信されると、特定のアクションとデータタイプに登録されているすべてのコンポーネントを検索します。 1つのコンポーネントしか見つからない場合、Androidはそのコンポーネントを直接起動します。たとえば、写真を撮るためにカメラを使用するアプリケーションがあります。あなたのアプリケーションの特徴の1つは、あなたが彼に撮った写真を送る可能性をユーザに与えるということです。ユーザーがどの種類のアプリケーションを使って写真を送信できるのかわかりません。また、複数の外部アプリケーションを使用する場合は、どの外部アプリケーションを使用するかをユーザーに選択させることもできます。この場合は、明示的な意図はありません。代わりに、アクションをACTION_SENDに設定し、データエクストラを写真のURIに設定した暗黙の目的を使用してください。

明示的な意図は、それが何を含んでいても、常にそのターゲットに伝えられます。フィルタは調べられません。ただし、暗黙的な意図は、コンポーネントのフィルタの1つを通過できる場合にのみコンポーネントに配信されます。

意図フィルター

インテントがAndroidシステムに送信されると、このインテントに適したアプリケーションが決定されます。複数のコンポーネントがこのタイプのインテントに登録されている場合、Androidはユーザーにそれらの1つを開く選択肢を提供します。

この決定はIntentFiltersに基づいています。 IntentFiltersは、アクティビティ、サービス、またはBroadcast Receiverが応答できるインテントの種類を指定します。インテントフィルタは、コンポーネントの機能を宣言します。それは、何の活動やサービスができるのか、そしてReceiverがどのタイプのブロードキャストを処理できるのかを指定します。対応するコンポーネントが宣言された型のインテントを受け取ることを可能にします。 IntentFiltersは通常、AndroidManifest.xmlファイルを介して定義されます。 BroadcastReceiverでは、コーディングでそれらを定義することも可能です。 IntentFiltersは、そのカテゴリ、アクション、およびデータフィルタによって定義されます。追加のメタデータを含めることもできます。

コンポーネントがインテントフィルタを定義していない場合は、明示的なインテントによってのみ呼び出すことができます。

以下は、フィルタを定義する2つの方法です

1.マニフェストファイル

マニフェストでインテントフィルタを定義した場合、アプリケーションはそのフィルタで定義されたインテントに反応するために実行されている必要はありません。アプリケーションがインストールされると、Androidはフィルタを登録します。

2.ブロードキャスト受信機

アプリケーションが実行されているときにのみブロードキャストレシーバにインテントを受け取らせたい場合。その後、実行時にプログラムで(意図的に)インテントフィルタを定義する必要があります。これは放送受信機にのみ有効であることに注意してください。

47
Varun Bhatia

単一のアクティビティを書いた後、最初のアクティビティからの情報の有無にかかわらず、別のタスクを実行するために別のアクティビティに移行する必要があります。

Androidプラットフォームでは、インテントインターフェイスによる移行が可能です。

単語はここからとられています: Intent Demo を使っていて、コードファイルも提供しているのでこの例を通すことをお勧めします。それであなたはそれを使うことができて、そして同じことを簡単に理解することができます。

12
Paresh Mayani

Androidの意図

Android Intentを使用すると、あるAndroidアクティビティから別のAndroidアクティビティに移動できます。例を使って、このチュートリアルではさまざまな種類のAndroidインテントについても説明します。

Android Intentは、あるアクティビティから別のアクティビティへの通信に使用される単純なメッセージオブジェクトとして定義できます。

インテントはアプリケーションの意図を定義します。活動間のデータ転送にも使用されます。

Android Intentを使用して、次の3つのタスクを実行できます。

  1. 現在のアクティビティから別のアクティビティまたはサービスを開く
  2. 活動とサービスの間でデータをやり取りする
  3. 責任を別のアプリケーションに委任します。たとえば、Intentsを使ってブラウザアプリケーションを開いてURLを表示することができます。

意図は大きく2つのカテゴリに分類できます。このカテゴリにキーワードはなく、Androidの目的がどのように使用されているかについての広い分類にすぎません。

明示的なAndroidインテント

明示的なAndroidインテントは、Androidシステムによって呼び出される必要があるコンポーネントを明示的に定義するインテントです。

 Intent MoveToNext = new Intent (getApplicationContext(), SecondActivity.class);

暗黙のAndroidインテント

暗黙のAndroidインテントは、正確なコンポーネントを定義する代わりに、実行したいアクションを定義するという意図です。このアクションを処理する決定は、オペレーティングシステムに任されています。 OSは、暗黙の目的のためにどのコンポーネントを実行するのが最適かを決定します。例を見てみましょう。

    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);

詳細については、下記をご覧ください。

http://developer.Android.com/reference/Android/content/Intent.html

9
IntelliJ Amiya

彼らの文書によると:

インテントは、別々のコンポーネント(2つのアクティビティなど)間の実行時バインディングを提供するオブジェクトです。インテントは、アプリの「何かをするという意図」を表します。インテントはさまざまなタスクに使用できますが、ほとんどの場合、それらは別のアクティビティを開始するために使用されます。

これは例とのリンクです: http://developer.Android.com/training/basics/firstapp/starting-activity.html#BuildIntent

この文書で説明されているように、アクティビティを開始するには(また、アクティビティとは何かを理解する必要があります)、以下のような目的を使用してください。

/** Called when the user clicks the Send button */
public void sendMessage(View view) {
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}
9
kta

インテントは、実行される操作の抽象的な記述です。 startActivityと一緒にActivityを起動し、broadcastIntentを関心のあるBroadcastReceiverコンポーネントに送信するために、そしてstartService(Intent)またはbindService(Intent、ServiceConnection、int)を使用してバックグラウンドサービスと通信することができます。

詳細についてはこれらのリンクを参照してください。

1)。 http://developer.Android.com/reference/Android/content/Intent.html

2) http://developer.Android.com/guide/topics/intents/intents-filters.html

3)。 http://www.vogella.de/articles/AndroidIntent/article.html

他にもたくさんの記事があります。

8
Dinesh Sharma

Intentとは何ですか?

コンポーネントに渡されるのは一種のメッセージまたは情報です。アクティビティの起動、Webページの表示、SMSの送信、Eメールの送信などに使用されます。

Androidには2種類のインテントがあります。

暗黙の意図
明白な意図

暗黙のインテントを使用してシステムコンポーネントを呼び出します

Intent i = newIntent(Android.content.Intent.ACTION_VIEW,Uri.parse(“http://www.Amazon.com”));

startActivity(i);

明示的インテントはアクティビティクラスを呼び出すために使用されます。

インテントインテント= newIntent(this、SecondActivity.class);

startActivity(intent);

もっと読むことができます

http://www.vogella.com/tutorials/AndroidIntent/article.html#intents_overviewhttp:// developer.Android.com/reference/Android/content/Intent.html

5
Mina Fawzy

Intentは操作を実行する意図です。

詳しくはあなたが参照することができます

http://developer.Android.com/reference/Android/content/Intent.html

また、私のブログで

http://emergingandroidtech.blogspot.in/2014/11/what-is-intent-in-Android.html

それがあなたにとって有益であるかどうか見てください。

ありがとうございました。

2
Shriyanshu Jain

インテントはクラスであり、いくつかのアクションを実行するための情報をバインドします。

例:ユーザがそのようなアクションを実行するときにデータをあるアクティビティから別のアクティビティに渡す

現在の活動.

2
madarkife

意図を理解するために、基本的に私はあなたがサイトを通過することをあなたに勧めます: http://developer.Android.com/guide/topics/intents/intents-filters.html

また、私の個人的なブログで例を使って意図について議論しました: http://androiddesk.wordpress.com/2011/12/24/explicit-intent/

http://androiddesk.wordpress.com/2012/01/13/implicit-intent/

あなたが便利だろうと思ったらちょうど見てください..

ありがとうございました

2
Deepthi G

広い視野では、Intentを次のように定義できます。

あるアクティビティが別のアクティビティを開始したいときには、どのアクティビティを開始したいのかを指定するIntentというオブジェクトを作成します。

1
Kartik Goyal

インテントは、1つのアクティビティから別のアクティビティを開始するために使用されます。基本的には、1つのアクティビティから別のアクティビティにデータを送信するなど、いくつかの目的で使用されます。

彼らは基本的に2つの種類があります

  1. 暗黙の意図.

  2. 明白な意図.

私はこれをよく知っている初心者として、これはAndroidの意図についてのいくつかの基本的な考えを与えると思います

0
Soorya Prakash

論文からDeep Dive into Android IPC/Binder Framework atAndroid Builders Summit 2013リンク

その意図は、小さいながらも効果的な行で理解されています

  1. Androidはインテント経由でIPC(プロセス間通信)の単純な形式をサポートしています
  2. インテントメッセージングは​​、Androidコンポーネント(アクティビティ、サービス、コンテンツプロバイダー、ブロードキャストレシーバー)間の非同期通信のためのフレームワークです。
  3. これらのコンポーネントは、同じアプリケーションでも異なるアプリケーション(プロセス)でも実行できます。
  4. ポイントツーポイントおよびパブリッシュサブスクライブメッセージングドメインの両方を有効にします。
  5. インテント自体は、実行される操作の説明と受信者に渡されるデータを含むメッセージを表します。

この スレッドから、AndroidアーキテクトDianne Hackbornの簡単な答えは、それを実際にはdata containerとして示しています。

Androidアーキテクチャの観点から

インテントは、プロセス間通信に使用されるデータコンテナです。それはAndroidアーキテクチャの観点からBinderの上に構築されています。

0
Zahan Safallwa

Androidアプリケーションには、0個以上のアクティビティを含めることができます。アプリケーションに複数のアクティビティがある場合は、あるアプリケーションから別のアプリケーションに移動する必要があります。 Androidでは、インテントとして知られているものを通してアクティビティ間を移動します。 putExtra()を使用して、意図的に開始したいアクティビティにデータを渡すことができます。

0
Shaon Hasan