6

私はAndroidアプリケーションをプログラミングしています。特定の操作 (メールの送信など) を実行するために他のアプリケーションを呼び出したいのですが、インテントに設定するアクションとカテゴリをどのように知ることができますか? 他のアプリケーションのインテント フィルターを確認する必要がありますか? そのアプリケーションがオープン ソースでない場合はどうなりますか?

また、data や extra 属性については、サードパーティのアプリケーションがどのようにインテントを処理するのかがわからないため、属性を設定する方法がわかりません。たとえば、メールのタイトルとして 1 つの文字列、メールの内容として 1 つの文字列、受信者として別の文字列、添付ファイルとして画像が必要です。これらすべての情報をインテントに含めることはできますか? サードパーティのアプリケーションがそれを処理する機能を提供していない場合はどうなりますか?

4

2 に答える 2

6

通常、Android の一般的なタスクには、他のアプリケーションが登録できる一般的なインテントがあります。
たとえば、テキストを共有するには、次のようなインテントを作成します。

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.send_to)));

ユーザーが共有方法を選択できるAndroidのネイティブ共有ダイアログが表示されます。

特に電子メールの場合は、次のようにします。

Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
                  "mailto","email@domain.com", null));
intent.putExtra(Intent.EXTRA_SUBJECT, "This is my email subject");
startActivity(Intent.createChooser(intent, "Email"));


その他の例として、デフォルトの SMS アプリケーションを起動することがあります。

Intent sendIntent = new Intent(Intent.ACTION_VIEW);         
sendIntent.setData(Uri.parse("sms:"));
sendIntent.putExtra("sms_body", getMessageBody());

または、電話のダイヤラーを開きます。

Intent intent = new Intent(Intent.ACTION_CALL);
        intent.setData(Uri.parse("tel:"+number));
        startActivity(intent);

アプリに実装したいアクションが何であるかを把握し、それぞれを実装する方法を理解する必要があります。

ここでさらにいくつかのデータを見つけることができます:

于 2013-04-03T15:33:07.773 に答える