当前位置: 首页 > 面试题库 >

android getlastknownlocation在模拟器中始终为null

欧阳飞
2023-03-14
问题内容

这似乎是一个常见的问题,但是即使我读了很多类似的问题,我也真的不明白为什么会这样。

我正在模拟器设备上使用基本的位置类,我设置了所有内容-
权限(FINE和COARSE),在DDMS中设置了坐标,我也尝试使用telnet,然后尝试,但是无论什么总是崩溃,都会导致nullpointer与getlastknownlocation有关的异常,这里有什么主意吗?

public class MainActivity extends Activity implements LocationListener {



private static LocationManager ok;
private Location L;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);



    ok=(LocationManager)this.getSystemService(ok.GPS_PROVIDER);
    L=ok.getLastKnownLocation(ok.GPS_PROVIDER);












}

@Override
public void onLocationChanged(Location Loc) {


    try {


        double latop=Loc.getLatitude();
        double longe=Loc.getLongitude();

        Log.i("OK", "and"+longe+""+latop);


    } catch (NullPointerException e)

    {

    }




}

问题答案:

getLastKnownLocation()``null如果最近没有应用向您希望的提供商请求位置修复,则通常会返回。

在模拟器上,它似乎更进一步:除非您的应用程序已调用,否则您将无法获得位置,除非已将位置传递给模拟器requestLocationUpdates()

对于使用通用的模式getLastKnownLocation(),如果你想获得一个实际的体面的赔率Location,是使用requestLocationUpdates()removeLocationUpdates()确保LocationManager正在积极寻求通过您所选择的供应商的位置。当然,如果您这样选择的话,也可以使用LocationListeneronLocationChanged(),而不是getLastKnownLocation()



 类似资料:
  • 我花了一整天的时间尝试了在堆栈溢出和数十个Google结果(简短摘要)的多个问题中找到的所有方法: 重新启动计算机 删除并重新创建AVD 将AVD图形更改为软件(既在AVD管理器中,也直接在文件中) 在SDK管理器中重新安装Emulator(所有可能的方式-更新、删除和重新安装,启动AVD时按需重新安装) 重新安装HAXM 重新安装Android studio 在SDK管理器中检查所有Androi

  • 问题内容: 我将尝试使用JavaFX 2,并使用一个简单的演示应用程序。该项目包括3个文件,即Main.java,Controller.java和sample.fxml。 在Sample.fxml中,我声明了控制器: 在我的Main.java中,我尝试访问控制器 所以我的第一个想法是映射不起作用。因此,我在控制器中添加了一个initialize方法。 现在的输出是: 在里面 空值 所以我现在的问题

  • 在升级到Android Studio 2020.3.1 canary 15后,当我尝试运行模拟器时,它被以下错误杀死: AVD Pixel_4_API_30的模拟器进程已终止。 它在以前的版本(4.1.3)中工作正常,但现在在安装新版本后,它显示了相同的错误。 我已经尝试了一些解决方案,建议在几乎类似的情况下;然而,它仍然不起作用。 我删除了我的模拟器(我也清除了目录: /.android/avd

  • 问题内容: 我正在创建一个新的Laravel项目,并且在调试表单请求的错误时,我注意到我的ErrorBag始终为空。即使在控制器返回时。我尝试了在互联网上找到的所有解决方案,但没有任何效果。 创建与作曲家新的项目,即使(如描述这里)使所有的字段为空时,我的开箱身份验证系统中有一个空的错误袋。 是的,所有路由都使用中间件组网络。 有什么想法导致此问题吗?(Session :: put()和Sessi

  • 下面是片段。请注意,我已经恢复到以前的提交,因此丢失了最近的修改,但请查看我编写的代码,然后才注意到始终等于0() 以下是当检测到活动后按: 以下是NoteActivity接收结果调用的方式。 null 我在我的项目上浪费了很多重要的时间,只是想知道是什么使resultCode和requestCode的值丢失了我发送的值。 任何帮助和指导都将不胜感激。非常感谢!

  • 问题内容: 我正在编写一个C#ASP.Net MVC应用程序,供客户端将文件发布到其他服务器。我正在使用通用处理程序来处理从客户端到服务器的发布文件。但是在我的处理程序中,System.Web.HttpContext.Current.Request.Files始终为空(0个计数)。 表格代码: 处理程序: 请帮我。谢谢。 问题答案: 最后,我发现了问题。 由于某些原因,控制器中的代码永远无法正常工