Как отправить мое местоположение (долгота и широта) в качестве смс-сообщения другому человеку? - PullRequest
5 голосов
/ 30 октября 2011

У меня есть приложение, в котором мне нужно отправить мое местоположение (долгота и широта) другому человеку при получении смс от него. Я каким-то образом получу свое местоположение (долгота и широта) и добавлю его в ответ в виде текста.смс, а затем отправить его другому человеку. Но теперь я сталкиваюсь с проблемой, как получить свое местоположение и поставить его в виде текста в ответ смс. До сих пор я написал код, который отправляет ответное сообщение при получении смс отдругой человек. Может ли кто-нибудь сказать мне, как получить мое местоположение и поместить его в виде текстового сообщения?

Вот мой код для отправки ответного сообщения:

public void onReceive (Контекст контекста, намерение намерения){

    Intent m=new Intent(context, ReceivelocationActivity.class);    
      PendingIntent pi=PendingIntent.getBroadcast(context, 0, m, 0); 
    Bundle bundle = intent.getExtras();        
    SmsMessage[] msgs = null;
    String str = ""; 
    String str2="";
    String str3="";
    String autoReplyToken = "Request_Accepted";
    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();                     
            str2=msgs[i].getOriginatingAddress();
            str += " :";
            str += msgs[i].getMessageBody().toString();
         str3=msgs[i].getMessageBody().toString();
            str += "\n";        
        }
        //---display the new SMS message---
        Toast.makeText(context, str, Toast.LENGTH_SHORT).show();

        SmsManager sms = SmsManager.getDefault();
        boolean isAutoReply = str3.startsWith(autoReplyToken);
         /* As suggested by Dan J   */
 Criteria hdCrit = new Criteria();
 hdCrit.setAccuracy(Criteria.ACCURACY_COARSE);
 hdCrit.setAltitudeRequired(false);
 hdCrit.setBearingRequired(false);
 hdCrit.setCostAllowed(true);
 hdCrit.setPowerRequirement(Criteria.POWER_LOW);

 hdLocMgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

 hdLocProvider = hdLocMgr.getBestProvider(hdCrit, true); 

 Location location = hdLocMgr.getLastKnownLocation(hdLocProvider);

 Double dlat = location.getLatitude();
 Double dlon = location.getLongitude();

        String msg = dlat + "," + dlon ;
/*  As suggested by Dan J  */ 
        if (!isAutoReply) {
            String autoReplyText = autoReplyToken + msg;
            sms.sendTextMessage(str2, null, autoReplyText, pi, null);
        }

    }                 
}

Может кто-нибудь сказать мне, как отправить фактическое местоположение в переменной "msg" вместо строки "location". У кого-нибудь есть идеи, пожалуйста, дайте мне знать?Заранее спасибо.

1 Ответ

4 голосов
/ 30 октября 2011

См. этот ответ , чтобы узнать, как получить долготу и широту:

Затем просто измените

String msg = "location" ; 

на

String msg = dlat + ", " + dlon; 

YouВам также необходимо добавить соответствующие разрешения в ваш XML-код манифеста (например, см. мой ответ здесь ).

...