第二个参数类型错误。找到“ java.lang.String”,必需为“ android.location.Location”

时间:2019-03-29 07:08:18

标签: java android gps sms

您好,我正在尝试通过短信发送我的位置信息,但始终收到一条错误消息,内容是:

Wrong 2nd argument type. Found: 'java.lang.String', required: 'android.location.Location'

检查信息:

sendLocationSMS(String,android.location.Location)

在FullscreenActivity中不能应用于(String,java.lang.String)

以下是我正在使用的特定代码行:

private void sendLocationSMS(String phoneNumber, Location currentLocation) {
    SmsManager smsManager = SmsManager.getDefault();
    StringBuffer smsBody = new StringBuffer();
    smsBody.append("http://maps.google.com?q=");
    smsBody.append(currentLocation.getLatitude());
    smsBody.append(",");
    smsBody.append(currentLocation.getLongitude());
    smsManager.sendTextMessage(phoneNumber, null, smsBody.toString(), null, null);
}

在我的onCreate中,我有这个:

sendLocationSMS("MY PHONE NUMBER", "");

3 个答案:

答案 0 :(得分:0)

sendLocationSMS("MY PHONE NUMBER", "");的第二个arg是一个字符串中,您应该使用Location对象。尝试创建一个新的位置,并将其作为第二个参数。

答案 1 :(得分:0)

您正在传递一个空的 String 作为第二个参数,而您的方法要求您传递一个Location类型的参数。因此,更改sendLocationSMS("MY PHONE NUMBER", "");以在第二个参数中传递类型为Location的变量。在onCreate上尝试一下
我注意到您没有听说过“ Location”类,因此请阅读here

String provider = ""; // change this to your provider
Location currentLocation = new Location(provider);
sendLocationSMS("MY PHONE NUMBER", currentLocation);

答案 2 :(得分:0)

正如答案所说,这显然是参数类型不匹配。 查找here如何获取当前位置。如果您不想传递实际的位置数据,则只需创建一个新的Location对象并将其传递给方法调用即可。