2011-10-30 19 views
5

Konumumu (boylam ve enlem), kendimden bir sms alma konusunda başka birine göndermem gereken bir uygulamam var. Bir şekilde konumumu (boylam ve enlem) alacağım ve yanıt sms olarak bir metin olarak ekleyeceğim ve sonra başka bir kişiye göndermek.Ama şimdi konumumu almak ve cevap sms.Till bir metin olarak koymak nasıl bir sorunla karşı karşıyayım Şimdi diğer bir sms alma üzerine bir cevap mesaj gönderen bir kod yazdık Kimse bana kimsenin konumumu nasıl aldığını ve metin mesajı olarak nasıl eklediğini söyle? İşte Konumum (boylam ve enlem), başkalarına yanıt sms olarak nasıl gönderilir?

yanıt mesajı göndermek için benim kodudur:

public void OnReceive (Bağlam bağlamını, Niyet niyet) {

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

    }     
} 

herkes nasıl yerine "msg" değişkeninde gerçek konumu göndermek için bana söyleyebilir "konum" dizesinin. Herhangi bir fikri olan herkes lütfen bana bildirin. Şimdiden teşekkürler. Ayrıca beyannamesine uygun izinleri eklemeniz gerekir

String msg = "location" ; 

String msg = dlat + ", " + dlon; 

için

Sonra sadece değiştirin:

+0

Hatta bu sorunun cevabını bilmek istiyorum, orada daha çok kimsenin kurtarmaya gelip gelebileceğini görelim. –

+1

Henüz nasıl yer alacağınızı anladınız mı? Bundan sonra sadece konum nesnesinden aldığınız numaralardan geçebilirsiniz. http://developer.android.com/guide/topics/location/obtaining-user-location.html –

+0

Dan J tarafından önerilen şekilde denedim ve kodumdaki eklemeler ama şimdi bile derleme değil. Herhangi bir fikriniz varsa, wron'a ne önerirsiniz? –

cevap

4

enlem ve boylam almak için nasıl this answer görün XML (örneğin, cevabıma bakın here).

+0

Bu kod parçamı mevcut koduma ekledim, yorumlarda görebiliyorum/* Dan J * tarafından önerildiği gibi/ama derleme değil. Bu satırda hata gösteriyor HDLocMgr = (LocationManager) getSystemService (İçerik. KONUM SERVİSİ); getSystemService() yöntemini oluşturuyor. Burada yanlış bir şey yapıyorum.Lütfen yanlış olduğum yeri düzeltin mi? Şimdiden teşekkürler. –

+0

Bunun yerine context.getSystemService() öğesini çağırmayı deneyin. Derleme hatalarını çözmek oldukça kolay olmalıdır - eğer derleyici yöntemi bulamazsa, o Nesnenin bu yöntemi sunduğu şeyi bulmanız gerekir (sadece Google) ve bu Nesne'deki yöntemi çağırmalısınız. http://developer.android.com/reference/android/content/Context.html –

İlgili konular