无法获取用户位置

2024-03-25

我正在尝试获取用户位置网络位置或gps位置或两者。为此,我正在运行一个后台服务,它实现LocationListener。我还在清单文件中添加了所有需要的权限。这是我的服务

public class GetLocation extends Service implements LocationListener {

    LocationManager lm;
    Location networkLocation, gpsLocation;

    @Override
    public void onCreate() {
        super.onCreate();
        lm = (LocationManager) getSystemService(LOCATION_SERVICE);
        if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
            lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
            gpsLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
            Toast.makeText(getApplicationContext(), "Getting Location Via GPS",
                    Toast.LENGTH_LONG).show();
        }
        if (lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
            lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0,
                    this);
            networkLocation = lm
                    .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
            Toast.makeText(getApplicationContext(),
                    "Getting location Via Network", Toast.LENGTH_LONG).show();
        }
        if (gpsLocation != null) {
            Toast.makeText(
                    getApplicationContext(),
                    "GPSLOCATION: " + gpsLocation.getLatitude() + " , "
                            + gpsLocation.getLongitude(), Toast.LENGTH_LONG)
                    .show();
        }
        if (networkLocation != null) {
            Toast.makeText(
                    getApplicationContext(),
                    "NETWORKLOCATION: " + networkLocation.getLatitude() + " , "
                            + networkLocation.getLongitude(), Toast.LENGTH_LONG)
                    .show();
        }
        if (gpsLocation == null && networkLocation == null) {
            Toast.makeText(getApplicationContext(),
                    "Couldn't get user location", Toast.LENGTH_LONG).show();
        }

    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        new Thread() {
            public void run() {
                Looper.prepare();

                if (gpsLocation != null) {
                    Log.d("Usman", "GPSLOCATION: " + gpsLocation.getLatitude()
                            + " , " + gpsLocation.getLongitude());
                }
                if (networkLocation != null) {
                    Log.d("Usman",
                            "NETWORKLOCATION: " + networkLocation.getLatitude()
                                    + " , " + networkLocation.getLongitude());
                }
                if (gpsLocation == null && networkLocation == null) {
                    Log.d("Usman", "Couldn't get user lcoation");
                }
                try {
                    Thread.sleep(3000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                Looper.loop();
            }
        }.start();
        return START_STICKY;
    }

    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }

    @Override
    public void onLocationChanged(Location location) {
        // do something with this location

        Toast.makeText(
                getApplicationContext(),
                location.getProvider() + " Location Changed:"
                        + location.getLatitude() + " , "
                        + location.getLongitude(), Toast.LENGTH_LONG).show();
    }

    @Override
    public void onProviderDisabled(String arg0) {
        Toast.makeText(getApplicationContext(), arg0 + " Disabled",
                Toast.LENGTH_LONG).show();
    }

    @Override
    public void onProviderEnabled(String provider) {
        Toast.makeText(getApplicationContext(), provider + " Enabled",
                Toast.LENGTH_LONG).show();
    }

    @Override
    public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
    }

}

在 onCreate() 方法中,gps 和网络位置均为 null。 谁能告诉我我哪里错了


正如您所说,您甚至没有得到“通过网络获取位置”的祝酒。所以你的执行不会进入 if 块

if (lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {

}

所以请确保您已检查过

Google 的位置服务 - 已选中

在您的设备设置中。

设置 > 位置服务 > Google 位置服务和访问位置。

那么你应该从以下位置获取位置LocationManager。否则你的代码的其余部分看起来不错。

希望这可以帮助。

参考链接 https://stackoverflow.com/questions/10154937/isproviderenabledlocationmanager-network-provider-return-false/15993514#15993514

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法获取用户位置 的相关文章

  • appcompat_v7 错误

    我发现材料支持库 更新的 appcompat v7 将于 10 月 17 日推出 http www reddit com r androiddev comments 2jd5gl roman nurik material support l
  • Android x86_64 和 x86 模拟器在 AlertDialog.onClick 事件上崩溃

    我正在 x86 64 和 x86 模拟器中测试 Android 应用程序 在从显示列表的 AlertDialog 中选择一个项目后 它崩溃了 Android 模拟器意外关闭 AlertDialog 是从 AppCompatActivity
  • RecyclerView.OnScrollListener:一次滚动实例被多次调用

    我有一个水平布局的回收视图 一次只有一个视图可见 mRecyclerView findViewById R id rvmain mRecyclerView setOnFlingListener null final SnapHelper s
  • Android:自动从项目包中删除未使用的图像

    我正在开发一个相当大的android项目 并且在drawable文件夹中有很多图像 其中许多图像未在项目中使用 因为它们已被替换 并且占用了宝贵的空间 有什么方法可以自动找到这些图像并删除它们 而不是搜索项目中的每个图像 我使用过的一些工具
  • 动画图像视图

    目前我正在开发一款游戏 这是我的游戏的详细信息 用户应选择正确的图像对象 我希望图像从左到右加速 当他们到达终点时 他们应该再次出现在活动中 这是我正在处理的屏幕截图 我有 5 个图像视图 它们应该会加速 您有此类动画的示例代码吗 非常感谢
  • java.lang.RuntimeException:release()后调用的方法

    If i am 不使用 相机 release in 表面被破坏 then 无法从另一个 Activity 再次启动 CameraActivity 简而言之 得到不幸的是应用程序已停止 错误 即使不释放相机 但如果我确实点击了 主页 按钮 来
  • Android 6.0 缺乏访问相机服务的权限

    我在 Android 6 0 中使用 Camera2API 我在Android 5 0中没有报错 然而 当我在 Android 6 0 中使用我的代码时 我遇到了问题 问题是有时我可以成功打开相机并拍照 但有时相机打不开 出现错误 java
  • 自定义 ListView 具有不同的行布局,根据 Web 服务响应进行扩展

    我有列表视图 我有3组观点 图像视图 视频查看 文本视图 我有一个返回图像 视频和文本的网络服务器 因此 根据服务器的响应 我想膨胀列表视图中行的视图 我知道使用自定义适配器来扩展自定义布局 我想知道如何使用自定义适配器来扩充视图类型 例如
  • 使用 firebase 按最新消息对聊天列表进行排序

    我不知道为什么我陷入了一个问题chatList不按最后一条消息时间或最新消息排序 我尝试过存储timestamp在数据库中和订单子依据时间戳 但它仍然不起作用 不起作用意味着列表不会在每条消息后排序 并继续将列表显示为在第一条消息后排序 看
  • 如何获取 Android 中临时文件的文件大小?

    如果我使用 openFileOutput 创建并写入临时文件 写入完成后如何获取文件大小 我希望这可以帮助你 File file new File selectedPath int file size Integer parseInt St
  • 尝试在空对象引用上调用虚拟方法“java.lang.String org.jsoup.nodes.Element.ownText()”

    我正在使用下面的代码来获取版本名称 from 应用商店通过使用 jsoup 我正在获取详细信息 但它引发了一些异常 我的代码是 public class ForceUpdateAsync extends AsyncTask
  • 在多模块项目中访问绑定适配器

    我有一个多模块项目 其中应用程序模块包含我的绑定适配器 而我的功能模块取决于我的应用程序模块 因为它是动态功能模块 应用程序 包含绑定适配器 gt 动态功能模块 存在布局的地方 我在所有模块中启用了数据绑定和 kapt 我无法成功构建应用程
  • 无法仅在控制台中启动 androidstudio

    你好 我的问题是下一个 我下载了Android Studio如果我去 路径 android studio bin 我执行studio sh 我收到以下错误 No JDK found Please validate either STUDIO
  • setKeyListener 将覆盖 setInputType 并更改键盘

    大家好 我在两个设备之间遇到问题 在实践中使用InputType和KeyListener我正在操纵一个EditText让它从数字键盘接收逗号和数字 有关更多背景信息 请检查我之前的question https stackoverflow c
  • 三星 tab2 平板电脑的 Android 开发

    是否可以使用 Eclipse 在 Samsung Tab 2 平板电脑中开发 Android 应用程序 需要安装什么驱动吗 当然可以 你必须安装标准的android开发工具 SDK ADT ad eclipse Juno最新版本 从这里下载
  • 游标在“查询、删除表、创建表、查询相同表名”后返回相同的列

    例如我有一个名为myTable在我的数据库文件中 Android ps它不支持列重命名 删除等 这张表有idx name columns 我想删除并重新创建该表 但使用新列 我是这样做的 db transaction var cursor
  • 无法在 BlackBerry Playbook 上设置音量

    我在更改黑莓游戏书的音量时遇到问题 首先 我将 Android 应用程序重新打包到 Palybook 应用程序 我需要使用搜索栏更改黑莓剧本的音量 并在搜索监听器中设置音频管理器音量 这是代码 audioManager AudioManag
  • Android 等距游戏引擎 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 是否有任何现有的开源或商业解决方案
  • 如何从耳机插孔获取电力?

    我的问题是是否有人知道如何创建一个可以通过设备的耳机插孔发送电荷的 Android 应用程序 就像这个视频中那样 该视频展示了一款 iPhone 应用程序 可控制插入耳机插孔的 LED 我想知道如何访问该设备来发送电信号 抱歉我的英语不是我
  • Android On Focus Listener 和 On Click Listener on ImageView

    我有一个 imageview 它具有两个属性 可聚焦的 and 可聚焦触摸模式 set to true

随机推荐

  • 如何删除文件中以括号开头和结尾的列

    如何删除文件中以括号开头和结尾的列 预期输入 input txt 的内容 ABC BCD EFG BCD ABC BCD DEF BCD ABC EFG HI JKL ABC EFG HI JK LMN 预期输出 output txt 的内
  • 面板数据 R 中的多重共线性检验

    我正在使用以下命令运行面板数据回归plm封装在R并希望控制解释变量之间的多重共线性 我知道有vif 函数在car package 但据我所知 它无法处理面板数据输出 The plm可以进行其他诊断 例如单位根检验 但我发现没有计算多重共线性
  • Python 中的类型安全

    我定义了一个Vector类具有三个属性变量 x y and z 坐标必须是实数 但没有什么可以阻止人们执行以下操作 gt gt gt v Vector 8 7 3 1 gt gt gt v x foo gt gt gt v x foo 我可
  • R 过渡图

    我想绘制一个转换矩阵 但每个状态都需要 2 列 我的矩阵是 gt R 0 30 60 90
  • Split 函数在循环内给出“下标超出范围”错误

    下面的代码片段尝试查看一列单元格的内容 每个单元格的格式为 X XX X XX 例如 5 66 13 44 该代码的目的是获取每个单元格 将每个字符串转换为双精度值 将它们与其他一些数字进行比较 然后对下一个单元格重复 Sub Test D
  • 为什么 ss 舍入到最接近的会改变日期的分钟

    我正在使用 sql server 2008 R2 由于一个问题 我能够知道smalldatetime 将 ss 舍入到最近的分钟 这是来自 MSDN 的内容 ss is two digits ranging from 00 to 59 th
  • 为什么 Rust 不允许局部常量的类型推断?

    我理解为什么不允许模块级常量的类型推断 与函数不允许类型推断的原因相同 然而 为什么 Rust 不允许类型推断local常数 fn main const N 1 error expected found let n 1 OK 还有比一致性更
  • 在控制台应用程序中使用异步和等待

    我有四种方法 Main 只调用preform方法 工作中 显示 请等待用户 花费时间 需要时间执行的程序 Preform 异步调用取时间和工作方法 以下是我的代码 using System using System Collections
  • 在网页中的 div 中使用 REM 单位

    我有一个页面使用 REM 单位和媒体查询 说inner php 我将该页面包含到我的其他网页中 假设outer php包含inner php 这里 inner php 使用 html font size 作为断点 喜欢 media all
  • 在 pandas 中读取 csv 文件时出错[CParserError: 标记数据时出错。 C 错误:捕获缓冲区溢出 - 可能存在格式错误的输入文件。]

    所以我尝试从一个文件夹中读取所有 csv 文件 然后将它们连接起来创建一个大 csv 所有文件的结构相同 保存并再次读取 所有这一切都是使用 Pandas 完成的 读取时出现错误 我附上代码和下面的错误 import pandas as p
  • 如何使用 Mockito 和 jUnit 模拟持久化和实体

    我正在尝试找到一种使用 Mockito 测试我的实体的方法 这是简单的测试方法 Mock private EntityManager em Test public void persistArticleWithValidArticleSet
  • Next.js 带有路由的多步表单

    我的 Next js 多步骤表单工作得很好 所有步骤之间的切换都在一页 index js 上 return div lt Navbar gt div div div
  • 设计在 IE6 和 IE8 浏览器中都好看的网页

    在ASP NET应用程序中 如何设计页面使其在IE6和IE8浏览器中都能正确显示 如果有任何可以在两种浏览器中工作的通用准则可供遵循 我想最大限度地减少我需要做的 CSS 工作 我可能仍然需要到处调整 但我想减少大量工作 如果有任何此类指南
  • 验证整数数组

    给定一个整数数组 1 2 3 4 如何使用验证器来检查表中是否存在这些内容 可能没有foreach loop validator Validator make request gt all array gt required exists
  • Mysql 选择应该有今天和明天日期的记录

    我想选择必须有两个或更多条目的记录 但表中应有今天和明天的日期 我正在以日期格式将日期保存在表中 SELECT availibility FROM availibility WHERE property id 8818 AND availi
  • jaxb抑制嵌套对象的外部标签

    我有一个复杂的对象 作为通常的 我无法控制的 API 的返回值返回 对于某些 API 调用 返回的 XML 如下所示
  • 如何从 HttpResponse 获取对象?

    我正在尝试将对象从服务器发送到客户端 客户端 HttpResponse response client execute request 服务器端 protected void doPost HttpServletRequest reques
  • 检查java流是否已被消费

    如何检查流实例是否已被消耗 意味着已调用终端操作 以便对终端操作的任何进一步调用可能会失败IllegalStateException stream has already been operated upon or closed 理想情况下
  • 为什么有符号整数的绝对值方法不返回无符号值?

    以下代码无法编译 fn main let x 5i32 abs let z u32 x 带有消息 error E0308 mismatched types gt src main rs 4 18 4 let z u32 x expected
  • 无法获取用户位置

    我正在尝试获取用户位置网络位置或gps位置或两者 为此 我正在运行一个后台服务 它实现LocationListener 我还在清单文件中添加了所有需要的权限 这是我的服务 public class GetLocation extends S