-2

2人がアプリを持っていると考えます。ユーザーの一方が他方の場所を知りたい場合、彼はSMSを送信します(内容は何でも特定できます)。もう一方のユーザーがSMSを取得したとき(可能であれば、受信したことを知らないはずです)。その後、彼の場所は、それを要求したユーザーに送り返されます。説明が明確であることを願っています。

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();
    }
  }

私はこのコードを手に入れました...これにどのような変更を加える必要がありますか..?

4

2 に答える 2

1

必要なのは Service ではなく、場所が必要なユーザー側の Broadcast Receiver です。

public class SmsReceiver extends BroadcastReceiver {


    private static final String ACTION_SMS_RECEIVED = 
        "android.provider.Telephony.SMS_RECEIVED";


    @Override
    public void onReceive(Context context, Intent intent) {


            if(intent.getAction().equals(ACTION_SMS_RECEIVED)){
                //your code to get location here.
            }

    }
}
于 2012-04-06T08:20:48.107 に答える
0

Service.likeを拡張して通常のサービスを作成する

    public class LocalService extends Service {
        @Override
        public void onCreate() {
  // SEND USER LOCATION
        }
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            Log.i("LocalService", "Received start id " + startId + ": " + intent);
            return START_STICKY;
        }
        @Override
        public void onDestroy() {
        }
        @Override
        public IBinder onBind(Intent intent) {
            return null;
        }
       }

次のようにサービスを開始:

  public final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            final String action = intent.getAction();
           // CHECK SMS IF IT IS FOR SEND LOCTION OR ANY OTHER SMS
            if (action.equals(ACTION_SMS_RECEIVED)) {
               //START SERVICE HERE
            }

        }
    };

ACTION_BOOT_COMPLETED ,ACTION_SCREEN_ON,ACTION_SCREEN_OFFサービスの開始と停止を処理するための BroadcastReceiver を登録します。

たぶん役立つ:-)

于 2012-04-06T08:30:02.790 に答える