Android開發app實現傳送簡訊功能
程式使用手機發簡訊的方法
簡訊收發:
◆傳送簡訊只需要幾行程式碼,如下:
SmsManager sms = SmsManager.getDefault(); PendingIntent pi = PendingIntent.getBroadcast(this, 0, new Intent(), 0); sms.sendTextMessage(phoneNumber, null, MsgStr, pi, null); |
其中引數phoneNumber和MsgStr均是String型別,表示接收方的電話號碼和簡訊內容
◆接收簡訊主要是繼承BroadcaseReceiver 類 ,覆蓋onReceive 函式:
package import android.app.Activity; importandroid.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.gsm.SmsManager; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; publicclass TinySMS extends Activity { publicstaticfinal String SMS_ACTION = "com.android.TinySMS.RESULT"; //private TextViewmessage; private Buttonsnd; private EditTexttel; private EditTexttxt; private SentReceiver receiver = new SentReceiver(); private @Override publicvoid onReceive(Context context, Intent intent) { if (intent.getAction().equals(SMS_ACTION)) { int code = getResultCode(); //短訊息傳送成功 if(code == Activity.RESULT_OK) Toast.makeText(TinySMS.this, R.string.msg_sent, Toast.LENGTH_SHORT).show(); } } }; /** Called when the activity is first created. */ @Override publicvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tel = (EditText) findViewById(R.id.EditText01); tel.setText("5554"); //模擬器之間互發簡訊 txt = (EditText) findViewById(R.id.EditText02); txt.setText("我用自己的程式試試發簡訊。"); snd = (Button) findViewById(R.id.Button01); snd.setOnClickListener(new View.OnClickListener() { publicvoid onClick(View arg0) { String phoneNo = tel.getText().toString(); String message = txt.getText().toString(); if (phoneNo.length()>0 && message.length()>0){ sendSMS(phoneNo, message); } else { Toast.makeText(TinySMS.this, "請重新輸入電話號碼和簡訊內容", Toast.LENGTH_LONG).show(); } } }); } privatevoid sendSMS(String address, String content) { SmsManager manager = SmsManager.getDefault(); Intent i = new Intent(SMS_ACTION); //生成PendingIntent,當訊息傳送完成,接收到廣播 PendingIntent sentIntent = PendingIntent.getBroadcast( this, 0, i, PendingIntent.FLAG_ONE_SHOT); manager.sendTextMessage( address, null, content, sentIntent, null); } } |
如果要收發簡訊,還需在AndroidManifest.xml中宣告許可權:
<uses-permissionandroid:name="android.permission.READ_SMS"></uses-permission> <uses-permissionandroid:name="android.permission.SEND_SMS"></uses-permission> |