Android 簡訊-發送(PendingIntent,SmsManager)
這功能相當簡單
只是2個元件比較難懂
一個是PendingIntent
另一個是SmsManager
我在實作時的參考,就不多說明
注意事項:
程式碼如下:
只是2個元件比較難懂
一個是PendingIntent
另一個是SmsManager
我在實作時的參考,就不多說明
注意事項:
- 要虛擬2個機器必預設定2個檔,不能同個檔開2次
- 記得要開uses permission :SEND_SMS
- SmsManager用Eclipse預設會載入import android.telephony.gsm.SmsManager
不過.gsm.SmsManager已經deprecated了,把gsm去掉就好
程式碼如下:
public static class PlaceholderFragment extends Fragment {
Button btn;
EditText etTel,etSms;
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container,
false);
btn = (Button) rootView.findViewById(R.id.button1);
etTel = (EditText) rootView.findViewById(R.id.editText1);
etSms = (EditText) rootView.findViewById(R.id.editText2);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String telStr= etTel.getText().toString();
String smsStr = etSms.getText().toString();
if(PhoneNumberUtils.isGlobalPhoneNumber(telStr)){
//檢查規格
v.setEnabled(false);
//將傳送鈕隱藏到確定傳送完成
sendSMS(telStr, smsStr, v);
//呼叫自訂對應的方法
}else{
Toast.makeText(getActivity(),"電話號碼不符格式", Toast.LENGTH_SHORT).show();
}
}
});
return rootView;
}
private void sendSMS(String telNo,String smsStr,View v){
Intent intent = new Intent(getActivity(),MainActivity.PlaceholderFragment.class);
//後來才發現,原來intent其實可以new Intent()就好…不用那麼麻煩
PendingIntent pi = PendingIntent.getActivity(
getActivity(),0,intent, 0);
//將intent包裏
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(telNo, null, smsStr,pi , null);
//依pi包裏送出簡訊
Toast.makeText(getActivity(), "簡訊已送出", Toast.LENGTH_SHORT).show();
//簡訊發送成功提示
v.setEnabled(true);
//將按鈕復原
}
}



留言
張貼留言