私はSMSについてのプログラムをコーディングしています、私はサービスと放送受信機を持っています、SMSが送信されると、私は「displayoriginatingadress」を取得し、それから自動的に別のSMSをソース番号に再送しますが、バグ/フォースが近くにあります送信元番号(私はフランス出身)を取得すると、「+ 33617890922」のようになりますが、「0617890922」のように取得する必要があるため、宛先アドレスが無効です。どうすればよいですか?**ヘルプはありますか????
public void onReceive(Context c, Intent intent) {
// TODO Auto-generated method stub
mContext = c;
Bundle pudsBundle = intent.getExtras();
Object[] pdus = (Object[]) pudsBundle.get("pdus");
SmsMessage messages =SmsMessage.createFromPdu((byte[]) pdus[0]);
Toast.makeText(c, "Service SMS Started OK !", Toast.LENGTH_LONG).show();
Toast.makeText(c, "SMS Received : "+messages.getMessageBody(),
Toast.LENGTH_LONG).show();
String str = messages.getMessageBody();
String num = messages.getDisplayOriginatingAddress();
String str1= PhoneNumberUtils.formatNanpNumber(num);
if(messages.getMessageBody().contentEquals("klmj")){
if (intent.getAction().equals(ACTION_RECEIVE_SMS)){
Intent serviceIntent = new Intent(mContext, ServiceLocation.class);
serviceIntent.putExtra("id", str1);
mContext.startService(serviceIntent);
}
.... ...........。
問題は「+33」からではありません。これは、SMSを送信するためにdestinationadressを「+33677890098」に置き換えようとしたためです。その作業は失われました。放送受信機から取得したデータが破損していますか?ここにいくつかのコードまた、私が見つけた「phoneutil」と呼ばれる外部ライブラリの使用方法がわかりません。私の問題は、私の意図から受け取った番号に起因するのでしょうか。運が悪かったので引用符を付けようとしましたが、文字列操作を使用しても同じ問題が発生しました...wtfありがとうございます
更新:「lo」メソッドで使用すると、文字列「str」が空であることに気付きました。以下のコード変更を参照してください。
public class ServiceTe extends Service{
private final String ACTION_RECEIVE_SMS = "android.provider.Telephony.SMS_RECEIVED";
private String initData;
int myLatitude , myLongitude;
private String loc;
private String str;
private String num;
public void onCreate(){
lo();
}
public int onStartCommand(Intent itn, int num1, int flag){
str = itn.getStringExtra("id");
Toast.makeText(this, "One !" +str, Toast.LENGTH_LONG).show();
return 0;
}
public void lo(){
// TODO Auto-generated method stub
Toast.makeText(this, "Two !", Toast.LENGTH_LONG).show();
TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
GsmCellLocation cellLocation = (GsmCellLocation) telephonyManager.getCellLocation();
//This Toast show : "" , Nothing...
Toast.makeText(this, str, Toast.LENGTH_LONG).show();
int cid = cellLocation.getCid();
int lac = cellLocation.getLac();
if(RqsLocation(cid, lac)){
loc = (
String.valueOf((float)myLatitude/1000000)
+ " : "
+ String.valueOf((float)myLongitude/1000000));
Its doesnt work like this,Force Close , and invalid DestinationAddress error
SmsManager.getDefault().sendTextMessage(str OR this : itn.getStringExtra("id"); , null, loc, null, null);
}else{ Its work like this !
SmsManager.getDefault().sendTextMessage("+33643598356", null, "Cant Report Location", null, null);
};