2012-04-07 11 views
0

「更新」と書かれた人にSMSを送信する場合。私はその人の位置を知ることができます。私は任意のSMSが到着したときにアクティブになる放送受信機を作ります。それがUPDATEと一致する場合、他のユーザーの場所を送信します。SMSの内容が一致する場合、somoneの場所を取得する

放送受信機。

public void onReceive(Context context, Intent intent) 
{ 
//this stops notifications to others 
this.abortBroadcast(); 

//---get the SMS message passed in--- 
Bundle bundle = intent.getExtras(); 
SmsMessage[] msgs = null; 
String str = "";    
if (bundle != null) 
{ 
//---retrieve the SMS message received--- 
Object[] pdus = (Object[]) bundle.get("pdus"); 
msgs = new SmsMessage[pdus.length];    
for (int i=0; i<msgs.length; i++){ 
    msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);     
    str += "SMS from " + msgs[i].getOriginatingAddress(); 
    from = msgs[i].getOriginatingAddress(); 
    str += " :"; 
    str += msgs[i].getMessageBody().toString(); 
    msg = msgs[i].getMessageBody().toString(); 
    str += "\n"; 
} 
if(checksomething){ 
    //make your actions 
    //and no alert notification and sms not in inbox 
} 
else{ 
    //continue the normal process of sms and will get alert and reaches inbox 
    this.clearAbortBroadcast(); 
} 
    } 
+1

あなたは疑問を持っていますか?あなたは何も尋ねていません。 – Kuffs

+0

私の質問はどのように私はあなたがSMSを送信した人の場所が受信される必要がありますUPSTATEと一致する場合は、SMSのコンテンツ(希望はあなたが私はコンテンツを意味するワットを得ることを期待する)です –

答えて

0

あなたのSMSを取得するためのサービスが必要ですか?

はいマニフェストで

場合:

<uses-permission android:name="android.permission.RECEIVE_SMS" /> 

とあなたのサービス:

import android.app.Service; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.os.Bundle; 
import android.os.IBinder; 
import android.telephony.SmsMessage; 
import android.widget.Toast; 

public class SrvSmsListener extends Service { 

    private BroadcastReceiver IncomingSMSReceiver = new BroadcastReceiver() { 
     private static final String SMS_RECEIVED = 
       "android.provider.Telephony.SMS_RECEIVED"; 

     @Override 
     public void onReceive(Context _context, Intent _intent) { 
      if (_intent.getAction().equals(SMS_RECEIVED)) { 
       Bundle bundle = _intent.getExtras(); 
       if (bundle != null) { 
        Object[] pdus = (Object[]) bundle.get("pdus"); 

        SmsMessage[] messages = new SmsMessage[pdus.length]; 
        for (int i = 0; i < pdus.length; i++) 
         messages[i] = SmsMessage 
           .createFromPdu((byte[]) pdus[i]); 
        for (SmsMessage message : messages) { 
         String strPhoneNo = message.getOriginatingAddress(); 
         String msg = message.getMessageBody(); 

         if (msg.startsWith("UPDATE")) 
         { 
          // this stops notifications to others 
          this.abortBroadcast(); 
          // do what you want 
         } 
        } 
       } 
      } 
     } 
    }; 

    @Override 
    public IBinder onBind(Intent arg0) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; 
     IntentFilter filter = new IntentFilter(SMS_RECEIVED); 
     BroadcastReceiver receiver = IncomingSMSReceiver; 
     registerReceiver(receiver, filter); 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     return super.onStartCommand(intent, flags, startId); 
    } 

    @Override 
    public void onDestroy() { 
     if (IncomingSMSReceiver != null) 
     { 
      unregisterReceiver(IncomingSMSReceiver); 
     } 
    } 
} 
+0

これは私に他のユーザーの場所を取得する... –

+0

このサンプルは、デバイスによって受信されたSMSが "UPDATE"で始まるとき – breceivemail

+0

ohk ..ありがとう!!! –

関連する問題