2012-03-11 3 views
2

メールを送信するコードが見つかりました。それは次のようになります。なぜIntent.createChooser()を使用しますか?

startActivity(Intent.createChooser(emailIntent, "Email")); 

は、私はそれを変更:

startActivity(emailIntent); 

そして、結果は私のデバイスで同じ表示されます。なぜIntent.createChooser()を使用するのですか?

答えて

1

電話機に複数のメールクライアントがインストールされている場合に便利です。ユーザーは、使用する場合にどちらを使用するかを選択します。intent.createChooser(...)

1

選択ツールを使用すると、インストールされているアプリの中から目的のものを選択するかどうかを選択できますデフォルト。ユーザーがデフォルトハンドラを設定していない場合は、createChooserを呼び出すかどうかに関係なく、セレクタが表示されます。私がチューザーを呼び出すのに見る唯一の利点は、デフォルトの「Complete action using」メッセージを取得するのではなく、選択ダイアログに名前を付けることです。

IMHO、私は、使用するアプリケーションを選択したい場合、デフォルトで取得する選択ダイアログの「常に」ボタンをチェックしないので、ほとんどの場合、createChooserコールを避けるべきだと思います。あなたは、基本的には、第2文でシステムを頼む何

3

はテント「android.content.Intent.ACTION_SEND」に、ステートメントに設定されたタイプに対応できる活動を探しに行くです

emailIntent.setType("message/rfc822"); // or "text/plain" 

が、最初のステートメントでは、インテントを処理するアクティビティが1つまたは複数ある場合でも、Androidアプリケーションの選択を表示するように要求します。スローでも

、あなたは声明

startActivity(emailIntent); 

を使用し、(エミュレータ、例えば)あなたの意思に対応する一切の電子メールクライアントが存在しない場合、その後のApp「ActivityNotFoundException」がありますが、使用している場合:

startActivity(Intent.createChooser(emailIntent, "Email")); 

とNOの電子メールクライアントがインストールされていない場合、アプリケーションは、「いいえアプリケーションは、このアクションを実行することはできません」というエラーメッセージが表示されます。

関連する問題