10.メールを送る
4100 ワード
10.1問題
アプリケーションはメールを外部に送信する必要があります.
10.2ソリューション
(API Level 4)SMSManagerを使用して文字またはデータのショートメッセージを送信します.SMSManagerは、ショートメッセージの送信を処理し、操作のステータスをアプリケーションにフィードバックするシステムサービスです.SMSMSManagerは、SmsManager.sendTextMessage()およびSmsManagerを提供します.sendMultipartTextMessage()メソッドは、文字メッセージを送信し、SmsManagerを提供する.sendDataMessage()メソッドでデータメールを送信します.これらの方法には、送信動作状態を伝達し、メッセージを要求ターゲットに返信するためのPendingIntentパラメータが含まれている.
10.3実現メカニズム
メッセージを送信してステータスを監視する簡単な例を次に示します(以下のコードリストを参照).メッセージを送信するActivity
要点:メールを送るにはリストにandroidを宣言する必要があります.permission.SEND_SMS権限.
この例では、ユーザがボタンをクリックすると、SMSManagerを介してメールが送信される.SMSManagerはシステムサービスであるため、静的メソッドSMSManagerを呼び出す必要がある.getDefault()は、その参照を取得します.sendTextMessage()メソッドのパラメータが宛先アドレス(番号)、サービスセンターアドレスおよびメールの内容.SMSManagerにシステムのデフォルトのサービスセンターアドレスを使用させるには、このパラメータをnullに設定する必要があります.ここには、送信するコールバックIntent:1つの送信操作のステータス、もう1つの送信状態を受信するための2つのBroadcastReceiverが登録されています.これらの受信機は、操作が送信待ち状態にある場合にのみ使用されます.登録され、Intentの処理が完了するとすぐに登録がキャンセルされます.
アプリケーションはメールを外部に送信する必要があります.
10.2ソリューション
(API Level 4)SMSManagerを使用して文字またはデータのショートメッセージを送信します.SMSManagerは、ショートメッセージの送信を処理し、操作のステータスをアプリケーションにフィードバックするシステムサービスです.SMSMSManagerは、SmsManager.sendTextMessage()およびSmsManagerを提供します.sendMultipartTextMessage()メソッドは、文字メッセージを送信し、SmsManagerを提供する.sendDataMessage()メソッドでデータメールを送信します.これらの方法には、送信動作状態を伝達し、メッセージを要求ターゲットに返信するためのPendingIntentパラメータが含まれている.
10.3実現メカニズム
メッセージを送信してステータスを監視する簡単な例を次に示します(以下のコードリストを参照).メッセージを送信するActivity
public class SmsActivity extends Activity {
// ( 、 )
private static final String RECIPIENT_ADDRESS = "";
/* Custom Action Strings for Result Delivery */
private static final String ACTION_SENT =
"com.examples.sms.SENT";
private static final String ACTION_DELIVERED =
"com.examples.sms.DELIVERED";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button sendButton = new Button(this);
sendButton.setText("Hail the Mothership");
sendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sendSMS("Beam us up!");
}
});
setContentView(sendButton);
}
@Override
protected void onResume() {
super.onResume();
//
registerReceiver(sent, new IntentFilter(ACTION_SENT));
registerReceiver(delivered, new IntentFilter(ACTION_DELIVERED));
}
@Override
protected void onPause() {
super.onPause();
//
unregisterReceiver(sent);
unregisterReceiver(delivered);
}
private void sendSMS(String message) {
//Construct a PendingIntent to fire on SMS sent
PendingIntent sIntent = PendingIntent.getBroadcast(
this, 0, new Intent(ACTION_SENT), 0);
//Construct a PendingIntent to fire on SMS delivery confirmation
PendingIntent dIntent = PendingIntent.getBroadcast(
this, 0, new Intent(ACTION_DELIVERED), 0);
//
SmsManager manager = SmsManager.getDefault();
manager.sendTextMessage(RECIPIENT_ADDRESS, null, message,
sIntent, dIntent);
}
/*
* BroadcastReceiver that is registered to receive events when
* an SMS message is sent; with the result code.
*/
private BroadcastReceiver sent = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
switch (getResultCode()) {
case Activity.RESULT_OK:
//
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
case SmsManager.RESULT_ERROR_NO_SERVICE:
case SmsManager.RESULT_ERROR_NULL_PDU:
case SmsManager.RESULT_ERROR_RADIO_OFF:
//
break;
}
}
};
/*
* BroadcastReceiver that is registered to receive events when
* an SMS delivery confirmation is received; with the result code.
*/
private BroadcastReceiver delivered = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
switch (getResultCode()) {
case Activity.RESULT_OK:
//
break;
case Activity.RESULT_CANCELED:
//
break;
}
}
};
}
要点:メールを送るにはリストにandroidを宣言する必要があります.permission.SEND_SMS権限.
この例では、ユーザがボタンをクリックすると、SMSManagerを介してメールが送信される.SMSManagerはシステムサービスであるため、静的メソッドSMSManagerを呼び出す必要がある.getDefault()は、その参照を取得します.sendTextMessage()メソッドのパラメータが宛先アドレス(番号)、サービスセンターアドレスおよびメールの内容.SMSManagerにシステムのデフォルトのサービスセンターアドレスを使用させるには、このパラメータをnullに設定する必要があります.ここには、送信するコールバックIntent:1つの送信操作のステータス、もう1つの送信状態を受信するための2つのBroadcastReceiverが登録されています.これらの受信機は、操作が送信待ち状態にある場合にのみ使用されます.登録され、Intentの処理が完了するとすぐに登録がキャンセルされます.