3

暗黙的インテントと明示的インテントを使用する場合は?

この暗黙のインテントについて:

インテント searchintent = new Intent()
searchintent.setAction(Intent.ACTION_VIEW) searchintent.setData(Uri.parse("http://www.google.com")) startActivity (searchintent)

別のアクションを設定するにはどうすればよいですか? また、setData を Uri パラメーター以外で使用するにはどうすればよいですか?

私は一般的に、両方のタイプの意図を理解しようとしています。

ありがとう

4

4 に答える 4

5

暗黙的インテントは、アクションを実行したいが、ユーザーが現在そのアクションを処理する必要があるアプリケーションがわからない場合です。たとえば、メールを送信するためのアプリケーションは多数あるため、ユーザーは使用するアプリケーションを選択できます。

明示的インテントは、mainactivity と secondActivity があり、明示的インテントと呼ばれる 2 番目のアクティビティを開始する場合に、アプリケーション内でアクティビティを開始するために使用されます。

StartActivity(new Intent(getBaseContext(), secondActivity.class));

インテントで渡されるバンドルにエクストラを追加することで、アクティビティ間でデータを渡すことができます。

Intent i = new Intent(getBaseContext, secondActivity.class);
i.putExtra("key",value);
startActivity(i);

2 番目のアクティビティでエクストラを取得するには、次のように呼び出します。

getIntent().getStringExtra("key");

または、渡された「データ」URIのみを取得したい場合は、呼び出すことができます

getIntent().getData();

エクストラは、たとえば int/double/String または parcable オブジェクトにすることができます

http://developer.android.com/reference/android/os/Parcelable.html

于 2012-11-05T21:35:09.813 に答える
0

完了する必要があるアクションが、さまざまなアプリケーションまたは自分のものではないアプリケーションによって完了することができる場合は、暗黙的インテントを使用します。たとえば、バーコード スキャン、連絡先の選択、テキスト メッセージ/電子メールなど....

インテントを処理するアクティビティを制御する場合 (つまり、クラス定義をインテントに渡す理由) には、明示的なインテントの使用法を使用する必要があります。

于 2012-11-05T21:34:40.243 に答える
0

インテントは、単に他のアクティビティへの呼び出しです。各アクティビティは、次の方法でこの呼び出しを (自分のものとして) 処理します。

1)OnCreate()メソッドでは、アクティビティは有効なアクションを探しています(呼び出し「ACTION_VIEW」のように)。アクションが有効で、このアクティビティによって呼び出し可能である場合、このアクティビティの関数が呼び出され、リクエストに「応答」します。(「startActivityForResult」で呼び出された場合)。

2) インテントへのデータの設定: これは、呼び出されたアクションがいくつかのパラメーターを必要とする場合に必要です。このパラメーターは多くの型になる可能性があるため、例として文字列または整数にすることができます。このタイプのデータを「バンドル」にバンドルして、それをインテントに入れることができます。指定されたアクションとデータを持つ呼び出されたアクティビティは、可能な場合はすべてを処理し、そうでない場合はエラーなどをスローします。

あなたのコード例では、ブラウザーを開くアクティビティを呼び出します (Android システムは、URL パラメーターを使用して "ACTION_VIEW" を処理する方法を認識しており、その下にある Android システムによって定義されたシステムの既定の動作を知っているためです。

独自のアクティビティを作成する場合は、パブリック変数を「アクション」として定義し、必要なパラメーターを使用して OnCreate メソッドで処理できます。

于 2012-11-05T21:36:08.987 に答える
0
  1. 明示的インテントは、特定のコンポーネントを呼び出すために使用されます。起動するコンポーネントがわかっているが、使用するコンポーネントをユーザーが自由に制御できないようにする場合。たとえば、2 つのアクティビティを持つアプリケーションがあるとします。アクティビティ A とアクティビティ B。アクティビティ A からアクティビティ B を起動したいと考えています。この場合、アクティビティ B をターゲットとする明示的なインテントを定義し、それを使用して直接呼び出します。
  2. 暗黙的インテントは、何をしたいのかはわかっているが、どのコンポーネントを起動すればよいかわからない場合に使用されます。または、使用するコンポーネントのリストから選択するオプションをユーザーに提供したい場合。これらのインテントが Android システムに送信されると、特定のアクションとデータ型に登録されているすべてのコンポーネントが検索されます。コンポーネントが 1 つしか見つからない場合、Android はコンポーネントを直接起動します。たとえば、カメラを使用して写真を撮るアプリケーションがあるとします。アプリケーションの機能の 1 つは、ユーザーが撮影した写真を送信できるようにすることです。ユーザーが写真を送信できるアプリケーションの種類がわからず、ユーザーが複数の外部アプリケーションを使用している場合に、どの外部アプリケーションを使用するかを選択するオプションをユーザーに提供したいと考えています。この場合、明示的なインテントは使用しません。

明示的なインテントは、含まれている内容に関係なく、常にターゲットに配信されます。フィルタは参照されません。ただし、暗黙的なインテントは、コンポーネントのフィルターの 1 つを通過できる場合にのみ、コンポーネントに配信されます。

于 2013-12-22T10:52:29.883 に答える