Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过onreceive()函数发送位置(经度和纬度)?_Java_Android_Gps_Sms_Location - Fatal编程技术网

Java 如何通过onreceive()函数发送位置(经度和纬度)?

Java 如何通过onreceive()函数发送位置(经度和纬度)?,java,android,gps,sms,location,Java,Android,Gps,Sms,Location,我有一个应用程序,在接收短信时需要发送位置。我的问题是如何发送位置,因为我继承了broadcastreceiver类,无法继承MapActivity来使用locationmanager获取位置。(java中不允许多重继承)。有人能告诉我如何做吗?在onReceive中,您将获得对应用程序的contect对象的引用。 所以你可以这样得到它: LocationManager lm = (LocationManager)context.getSystemService(Context.LOCATION

我有一个应用程序,在接收短信时需要发送位置。我的问题是如何发送位置,因为我继承了broadcastreceiver类,无法继承MapActivity来使用locationmanager获取位置。(java中不允许多重继承)。有人能告诉我如何做吗?

onReceive
中,您将获得对应用程序的contect对象的引用。 所以你可以这样得到它:

LocationManager lm = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);

LocationManager与Mapacity无关。您可以在获得上下文对象的任何位置(任何活动/服务、BroadcastReceive onReceive方法和其他位置)获取对它的引用。

onReceive
中,您可以获取对应用程序上下文对象的引用。 所以你可以这样得到它:

LocationManager lm = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);

LocationManager与Mapacity无关。您可以在任何有上下文对象的地方(任何活动/服务,以及在BroadcastReceiver onReceive方法和其他地方)获取对它的引用。

这里不需要多重继承,您可以委托:您的广播接收器的实例可以简单地调用另一个对象上的方法,例如
活动

可以使用一个内部类来实现这一点,这样您就可以在同一个类中获得接收方和活动的代码,如果您需要的话

例:


在这里,您不需要多重继承,只需委托即可:广播接收器的实例可以简单地调用另一个对象上的方法,例如
活动

可以使用一个内部类来实现这一点,这样您就可以在同一个类中获得接收方和活动的代码,如果您需要的话

例:


我更改了我的代码。现在它可以工作了,但它没有发送自己的位置,而是再次发送收到的消息。为什么会这样?这是我的代码:如果你想看到任何其他文件(如.xml),请告诉我,我会将其发布到这里。首先,你真的应该给变量指定有意义的名称。很难读懂这个。。。而且你还没有修正我的建议——你的代码现在甚至无法编译。我认为你应该修改它,让它更具可读性,然后解决问题。这是我的代码,在按照你的建议解决问题后,我将给出一个解释,可以帮助你轻松地阅读代码(很抱歉,变量名我现在无法更改,因为它们在其他地方使用,但我将尝试在将来使它们的名称为人类可读)。从一开始,我就有一些公共静态变量,我正在使用这些变量创建接收短信的列表视图,因此它们可能不受您的关注,接下来是locationManager、经度和纬度。之后,在onReceive函数中,继续…我提取接收短信的地址和正文。“str”变量包含发件人+邮件正文的字符串。“str2”是一个变量,其中包含发件人的地址,我在sendTextMessage中使用该地址自动回复收到的短信。“str3”是一个变量,其中包含字符串,用于比较自动回复条件(我使用了一个已接受的变量请求来检查何时回复)。“msg”是一个包含经度和纬度字符串的变量,我将该字符串与我的“autoReplyToken”连接,并将该值存储在“autoReplyText”中并发送给发件人。我更改了代码。现在它可以工作了,但它不再发送自己的位置,而是再次发送收到的消息。为什么会这样?这是我的代码:如果您想查看任何其他文件(如.xml)请让我知道,我会把它贴在这里。首先,你真的应该给变量起个有意义的名字。这很难读懂……而且你还没有修正我的建议——你的代码现在甚至无法编译。我认为你应该修改它,让它更具可读性,然后修正问题。这是我在按照建议修正问题后的代码通过你和它,我给出了一个解释,这可以帮助你轻松地通过代码(很抱歉,变量名我现在不能更改,因为它们在其他地方使用,但我会尽量让它们的名称在将来让人可读)。从一开始,我就有一些公共静态变量,我正在使用这些变量创建接收短信的列表视图,因此它们可能不受您的关注,接下来是locationManager、经度和纬度。之后,在onReceive函数中,继续…我提取接收短信的地址和正文。“str”变量包含发件人+邮件正文的字符串。“str2”是一个变量,其中包含发件人的地址,我在sendTextMessage中使用该地址自动回复收到的短信。“str3”是一个变量,其中包含字符串,用于比较自动回复条件(我使用了一个已接受的变量请求来检查何时回复)。“msg”是一个包含经度和纬度字符串的变量,我将该字符串与我的“autoReplyToken”连接,并将该值存储在“autoReplyText”中并发送给发送方。