2015-04-14 75 views
-1

快速的问题,我有我的班级设置和我的短信发送,我没有任何错误。我试图发送我的位置作为短信的一部分,作为谷歌地图链接。问题是我的消息正在发送,但位置链接没有通过?但该文件没有错误并且消息传递正常。发送SMS消息问题的位置?

任何想法?此外,我还在我的Manifest文件中包含了“访问精确位置”。

类别:

Button btnSendSMS; 
EditText txtPhoneNo; 
EditText txtMessage; 
String message; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_send_sms); 
    btnSendSMS = (Button) findViewById(R.id.btnSendSMS); 
    txtPhoneNo = (EditText) findViewById(R.id.txtPhoneNo); 
    txtMessage = (EditText) findViewById(R.id.txtMessage); 


    btnSendSMS.setOnClickListener(new View.OnClickListener() 
    { 
     public void onClick(View v) 
     { 
      String phoneNo = txtPhoneNo.getText().toString(); 
      String message = txtMessage.getText().toString(); 
      displayLocation(); 

      if (phoneNo.length()>0 && message.length()>0) 
       sendSMS(phoneNo, message); 
      else 
       Toast.makeText(getBaseContext(), 
         "Please enter both phone number and message.", 
         Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 


    private void displayLocation(){ 
     LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 10, new LocationListener(){ 
      @Override 
      public void onStatusChanged(String s, int i, Bundle bundle) {} 
      @Override 
      public void onProviderEnabled(String s) {} 
      @Override 
      public void onProviderDisabled(String s) {} 
      @Override 
      public void onLocationChanged(final Location location) {} 
     }); 
     Location myLocation = locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER); 
     double longitude = myLocation.getLongitude(); 
     double latitude = myLocation.getLatitude(); 
     message+="https://www.google.co.id/maps/@"+latitude+","+longitude; 
} 





//---sends a SMS message to another device--- 
private void sendSMS(String phoneNumber, String message) 
{ 

    PendingIntent pi = PendingIntent.getActivity(this, 0, 
      new Intent(this, Home.class), 0); 
     SmsManager sms = SmsManager.getDefault(); 
     sms.sendTextMessage(phoneNumber, null, message, pi, null); 


    String SENT = "SMS_SENT"; 
    String DELIVERED = "SMS_DELIVERED"; 

    PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, 
      new Intent(SENT), 0); 

    PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, 
      new Intent(DELIVERED), 0); 

    //---when the SMS has been sent--- 
    registerReceiver(new BroadcastReceiver(){ 
     @Override 
     public void onReceive(Context arg0, Intent arg1) { 
      switch (getResultCode()) 
      { 
       case Activity.RESULT_OK: 
        Toast.makeText(getBaseContext(), "SMS sent", 
          Toast.LENGTH_SHORT).show(); 
        break; 
       case android.telephony.gsm.SmsManager.RESULT_ERROR_GENERIC_FAILURE: 
        Toast.makeText(getBaseContext(), "Generic failure", 
          Toast.LENGTH_SHORT).show(); 
        break; 
       case android.telephony.gsm.SmsManager.RESULT_ERROR_NO_SERVICE: 
        Toast.makeText(getBaseContext(), "No service", 
          Toast.LENGTH_SHORT).show(); 
        break; 
       case android.telephony.gsm.SmsManager.RESULT_ERROR_NULL_PDU: 
        Toast.makeText(getBaseContext(), "Null PDU", 
          Toast.LENGTH_SHORT).show(); 
        break; 
       case android.telephony.gsm.SmsManager.RESULT_ERROR_RADIO_OFF: 
        Toast.makeText(getBaseContext(), "Radio off", 
          Toast.LENGTH_SHORT).show(); 
        break; 
      } 
     } 
    }, new IntentFilter(SENT)); 

    //---when the SMS has been delivered--- 
    registerReceiver(new BroadcastReceiver(){ 
     @Override 
     public void onReceive(Context arg0, Intent arg1) { 
      switch (getResultCode()) 
      { 
       case Activity.RESULT_OK: 
        Toast.makeText(getBaseContext(), "SMS delivered", 
          Toast.LENGTH_SHORT).show(); 
        break; 
       case Activity.RESULT_CANCELED: 
        Toast.makeText(getBaseContext(), "SMS not delivered", 
          Toast.LENGTH_SHORT).show(); 
        break; 
      } 
     } 
    }, new IntentFilter(DELIVERED)); 

    android.telephony.gsm.SmsManager smms = android.telephony.gsm.SmsManager.getDefault(); 
    smms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI); 
} 
+0

有什么问题?你没有给我们提供有关问题的详细信息。 – tnw

+0

@tnw我的不良只是编辑。基本上我的消息传递有效,但谷歌位置链接没有通过我的消息,但没有错误?和应用程序工作...任何想法? –

回答

0

其在displayLocation()设置的message变量是您的活性(在代码的顶部声明)的成员变量。所以当你这样做时:

String message = txtMessage.getText().toString(); 
displayLocation(); 

该局部变量message没有修改。

你可以做的是从displayLocation会返回一个字符串,并将其添加到消息:

private String displayLocation() { 
    //... 
    return "https://www.google.co.id/maps/@"+latitude+","+longitude; 
} 

String message = txtMessage.getText().toString() + displayLocation(); 
if (phoneNo.length()>0 && message.length()>0) 
//... 

而且我相信你应该,如果你不使用任何其他地方取出message类的成员变量。

+0

...抱歉有点不确定如何做到这一点,你可以请解释我如何修改变量,使其工作?所有这一切都是新的。 –

+0

@AnkhitSharma看到我的更新 –