FusedLocationProviderClient requestLocationUpdates 不会触发上述 API 23 的 LocationCallBack

2024-04-02

我已经用尽了所有可能的方法来解决这个问题。在对我的应用程序进行调整之前,从技术上讲,我使用的是在 API 23 及更高版本中运行的相同代码。

回调(在请求位置更新中)不在手机中触发 棉花糖及以上(但它在模拟器中运行良好,使用 Pixel 2 API 26 模拟器进行测试)。请注意,权限已授予/允许,并且 GPS 也已启用。另外,正如您在下面的代码中看到的那样,我已经进行了尝试捕获,但仍然没有错误,甚至控制台中没有任何日志表明存在错误。我已经在多部手机上进行了测试(棉花糖、牛轧糖和奥利奥手机,不起作用。棒棒糖和奇巧手机,起作用)

受影响的代码:

private var mFusedLocationClient: FusedLocationProviderClient? = null
private val UPDATE_INTERVAL = (30 * 1000).toLong()  
private val FASTEST_INTERVAL: Long = 300000
private lateinit var mLocationRequest:LocationRequest
private lateinit var locationCallback: LocationCallback

override fun onCreate(savedInstanceState: Bundle?) {

     locationCallback = object : LocationCallback() {
         override fun onLocationResult(locationResult: LocationResult?) {
                //super.onLocationResult(locationResult)
                onLocationChanged(locationResult!!.lastLocation)
            }

          override fun onLocationAvailability(p0: LocationAvailability?) {
            }
     }

    startLocationUpdates()

}

protected fun startLocationUpdates() {
        mLocationRequest = LocationRequest.create()
        mLocationRequest!!.run {
            setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
            setInterval(UPDATE_INTERVAL)
            setFastestInterval(FASTEST_INTERVAL)

        }
//      mLocationRequest = LocationRequest().apply {
//            interval = UPDATE_INTERVAL
//            fastestInterval = FASTEST_INTERVAL
//            priority = LocationRequest.PRIORITY_HIGH_ACCURACY
//      }

        val builder = LocationSettingsRequest.Builder()
                    .addLocationRequest(mLocationRequest)


        val client: SettingsClient = LocationServices.getSettingsClient(this)
        val task: Task<LocationSettingsResponse> = client.checkLocationSettings(builder.build())
        task.addOnSuccessListener { locationSettingsResponse ->

        }

        task.addOnFailureListener { exception ->
          print(exception)
        }

        registerLocationListner()

  }

private fun registerLocationListner() {

    if(android.os.Build.VERSION.SDK_INT >= 15 && checkPermission()) { 

        mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this)

          try{

    //            locationCallback does not trigger if the phone is android API 23 or higher
         mFusedLocationClient?.requestLocationUpdates(mLocationRequest, locationCallback, null)

          }catch(e:Exception){

          }



    }


}

private fun checkPermission() : Boolean {
      if (ContextCompat.checkSelfPermission(this , android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
          return true;
      } else {
          requestPermissions()
          return false
      }
}

private fun requestPermissions() {
    if(android.os.Build.VERSION.SDK_INT >= 23){
        ActivityCompat.requestPermissions(this,
                arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION),
               1)

    }else{
        ActivityCompat.requestPermissions(this, arrayOf("Manifest.permission.ACCESS_FINE_LOCATION"),1)

    }
}

我的 gradle 也只是为了显示我的依赖项/使用的框架

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

apply plugin: 'io.fabric'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "my app id goes here"
        minSdkVersion 19
        targetSdkVersion 26
        versionName '2.5'
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
        versionCode 4
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            minifyEnabled false
            debuggable true
        }
    }
    productFlavors {
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:support-dynamic-animation:26.1.0'
    implementation 'com.google.android.gms:play-services-ads:16.0.0'
    implementation 'com.google.android.gms:play-services-location:16.0.0'
    implementation 'com.google.firebase:firebase-core:16.0.4'
    implementation 'com.google.firebase:firebase-firestore:17.1.1'
    implementation 'com.google.android.gms:play-services-maps:16.0.0'
    implementation 'com.crashlytics.sdk.android:crashlytics:2.9.5'
    implementation 'com.squareup.okhttp3:okhttp:3.8.1'
    implementation('com.github.bumptech.glide:glide:4.4.0') {
        exclude group: "com.android.support"
    }
    kapt 'com.github.bumptech.glide:compiler:4.4.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
apply plugin: 'kotlin-kapt'
apply plugin: 'com.google.gms.google-services'

None

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

FusedLocationProviderClient requestLocationUpdates 不会触发上述 API 23 的 LocationCallBack 的相关文章

  • Access / Word 2010 VBA 邮件合并尝试打开 [文件夹名称].mdb 而不是 ACCDB 源

    我们正在尝试从 Access 中自动执行邮件合并过程 单击按钮后 VBA 将运行指定当前数据库 accdb 作为数据源并运行 SQL 具体代码如下 Set up Word Dim objWord As Object Set objWord
  • 在哪里存储 Java 的 .properties 文件?

    The Java教程 http download oracle com javase tutorial essential environment properties htmlon using Properties 讨论如何使用 Prop
  • 带重定向标准流的 C# + telnet 进程立即退出

    我正在尝试用 C 做一个 脚本化 telnet 项目 有点类似于Tcl期望 http expect nist gov 我需要为其启动 telnet 进程并重定向 和处理 其 stdin stdout 流 问题是 生成的 telnet 进程在
  • Android ScrollView fillViewport 不工作

    我有一个简单的布局 名称位于顶部 按钮位于屏幕底部 或者超出该按钮 以防我添加更多项目 所以我使用带有 LinearLayout 的 ScrollView 如下所示
  • Scrapy Spider不存储状态(持久状态)

    您好 有一个基本的蜘蛛 可以运行以获取给定域上的所有链接 我想确保它保持其状态 以便它可以从离开的位置恢复 我已按照给定的网址进行操作http doc scrapy org en latest topics jobs html http d
  • 在 Android 中使用 iText 将图像添加到特定位置

    我想使用 Android 中的 iText 将图像添加到 PDF 文件中的特定位置 这是一个可填写的表单 我添加了作为图像占位符的文本框 我想要做的就是像这样获取该文本框和图像 public class FormFill public st
  • Googletest:如何异步运行测试?

    考虑到一个包含数千个测试的大型项目 其中一些测试需要几分钟才能完成 如果按顺序执行 整套测试需要一个多小时才能完成 通过并行执行测试可以减少测试时间 据我所知 没有办法直接从 googletest mock 做到这一点 就像 async选项
  • NGinx $proxy_add_x_forwarded_for 和 real_ip_header

    我在 NGinx 下有一个 web 应用程序和另一个前端负载均衡器 如下所示 x x x x IP 地址 客户端 a a a a gt LB b b b b gt NGX c c c c gt WEBAPP d d d d 这是我的 NGi
  • Typescript 函数接口重载

    我有以下代码 interface MySecondInterface a type A interface MyInterface val1 string val2 string MySecondInterface a
  • 带显示块的SPAN

    和默认有什么区别 div 元素和默认值 span 元素与display block HTML 元素的有效性和语义存在差异 否则它们是相同的 div and span两者都被定义为通用容器 在 HTML 方面没有更深层次的含义 一个默认为块显
  • 自定义 Visual Studio 2008 中的位置栏

    有人成功定制了 VS 2008 的 Places Bar 吗 我从 VS 2005 进行的自定义设置并没有转移到 2008 显然 并且无论我如何处理注册表 我都无法使我的自定义位置出现在 打开 对话框中 我已经阅读并应用了相关的MS KB文
  • 从 Azure 应用服务连接到 MongoDB Atlas 集群

    我在 Azure 上有一个 Web 应用程序 它连接到 Atlas cloud mongodb com 上托管的 MongoDB 集群 我想使用 Atlas 这样我就不必关心 MongoDb 配置 问题是我的集群连接超时 我必须在我的 mo
  • 匿名结构体作为返回类型

    下面的代码编译得很好VC 19 00 23506 http rextester com GMUP11493 标志 Wall WX Za 与VC 19 10 25109 0 标志 Wall WX Za permissive 这可以在以下位置检
  • 使用泛型全面实现特征

    我正在通过实现矩阵数学来练习 Rust 但遇到了一些障碍 我定义了我认为与矩阵相关的特征 trait Matrix
  • 错误:无效使用不完整类型“类 Move”/未定义对 Move::NONE 的引用

    拜托 我不知道为什么这个简单的代码被拒绝 它给了我 2 个编译错误 请帮帮我 I use 代码 块 20 03 我的编译器是GNU GCC 移动 hpp class Move public Move Move int int public
  • Android 和 Java 中绘制椭圆的区别

    在Java中由于某种原因Ellipse2D Double使用参数 height width x y 当我创建一个RectF在Android中参数是 left top right bottom 所以我对适应差异有点困惑 如果在 Java 中创
  • 保存符号方程以供以后使用?

    From here http www mathworks com help releases R2011a toolbox symbolic brvfu8o 1 html brvfxem 1 我正在尝试求解这样的符号方程组 syms x y
  • 当ScrollView滚动到底部时加载更多数据

    我有一个带有动态加载内容的滚动视图 有时可能会有很多内容 所以我想在用户滚动到底部时加载更多内容 我搜索了合适的方法 发现了两种 onScrollChanged and getScrollY 但我不知道如何将它用于我的目的 请给我一些建议
  • 如果产品重量超过1000克,如何以公斤为单位显示

    在 Storefront 主题中 我使用下面的代码将格式化重量从 1000g 更改为 1kg add action woocommerce after shop loop item title show weight 10 function
  • android ndk 硬件调试内存

    背景 我对 C 很有经验 对 Android 和 Java 还很陌生 但这是编程的环境问题 我已经用 ANSI C 开发了一个管理应用程序 可以移植到任何操作系统 只需在依赖于操作系统的代码中添加 UI 即可 它使用相当多的内存 特别是对于

随机推荐

  • 获取 lift 中的复选框和单选按钮值

    我正在尝试处理电梯框架中的表格 我的表单有一个复选框和单选按钮 我如何检查复选框是否被选中以及所选的单选按钮 我使用以下代码来获取其他元素值 风景
  • 像数组一样访问 json 对象中的元素[重复]

    这个问题在这里已经有答案了 可能的重复 我有一个嵌套数据结构 JSON 如何访问特定值 https stackoverflow com questions 11922383 i have a nested data structure js
  • 我的 Facebook 应用程序如何将消息发布到墙上?

    我已经知道如何代表 Facebook 用户使用图形 API 将某些内容发布到墙上 但现在我想以我的应用程序的名义发布一些内容 我正在尝试这样做 protected void btn submit Click object sender Ev
  • QWidget setGeometry 在不使用 QLayout 的情况下显示

    目标是在另一个 QWidget 中绘制一个 QWidget 子类 只给出坐标 include
  • 如何在命令行中执行 Julia 代码?

    我最近在 Julia 中转移了我的代码 我想知道如何在命令行中执行 Julia 代码 我知道 Julia 代码可以通过运行一次来 编译 但问题是我需要对集 群上的模拟模型进行参数扫描 我只能使用命令行 而不能使用 REPL 在集群上运行模拟
  • Twig 设置在下拉菜单中选择选项

    我目前正在从头开始编写 php mvc 并使用 twig 作为我的模板引擎 并且需要一些帮助来设置下拉列表中的选定选项 目前 在我的模型中 我有一个 sql 查询 它可以提取所有主管列表 并使用 twig for 循环将它们放入我的下拉列表
  • 通道适配器和消息网关模式有什么区别?

    无论我读了多少关于这两种模式的文章 我都看不出其中的区别 这是一个很好的问题 因为它们的相似之处在于它们都提供对消息系统的应用程序访问 我认为正是他们实现这一目标的方式使他们与众不同 通道适配器模式涉及如何从现有系统获取数据而不修改该系统
  • 在 Play 2.0 视图中转义 JavaScript 字符串?

    有没有一种简单的方法可以转义字符串以用作 Play 2 0 视图中的 JavaScript 字符串 例如 下面是一个简单的视图 它在 onclick 中创建带有确认框的链接 text String link Call message Str
  • 指数位数

    是否可以设置用于打印浮点数指数的位数 我想将其设置为3 现在 f 0 0000870927939438012 gt gt gt 14e f 8 70927939438012e 05 gt gt gt 0 14e f 8 709279e 00
  • 页面刷新而不是 Ajax Load 无需

    在表单提交时 我想加载一个带有 mysql 表的更新列表的 div 我将表单变量发送到 php 并将它们发布到 mysql 表中 同一页面显示完整的表数据 我想将数据加载到与表单相同的 div 标签中 因此 信息似乎正在表单上方加载 我的
  • 类型 '' 不能用作泛型类型或方法 '' 中的类型参数 'T'。没有从 '' 到 '' 的隐式引用转换

    我从数据库生成了 Linq 到实体模型并对其进行了修改 我制作了接口 public interface IValid byte Valid get set 并使一些生成的类继承该接口 我编写了通用类来访问数据库中的表 public List
  • 在绘图中向堆积条形图添加计数百分比

    Given the following chart created in plotly 我想添加每个块内 M 和 F 类别的每个计数的百分比值 用于生成该图的代码 arr np array Dog M Dog M Dog F Dog F C
  • 计算查询中活动时间戳之间的时间差

    我对 Access 相当陌生 无法解决 我希望 一个简单的问题 我想我可能是通过 Excel 护目镜来查看它 我有一个名为importedData我每天 并不奇怪 导入一个日志文件 该日志文件来自某些采矿设备上的简单数据记录应用程序 本质上
  • 为什么我无法将工作簿定义为对象?

    为什么我不能用这两种方式定义工作簿 我在那里有范围位只是为了快速测试 我该如何修复它 这会产生一个 Compile Error Type Mismatch Sub Setwbk Dim wbk As Workbook Set wbk F Q
  • 将查询数据保存为 csv 文件

    我有一个应用程序 可以打开 csv 文件并将所有内容显示到格式化的 datagridview 中 从那里我有一个按钮可以打开另一个包含一系列复选框的表单 复选框具有我们之前打开的csv文件的所有属性 用户应该能够根据他们想要的属性查询文件
  • 卸载 Visual Studio 2013 update 1 rc

    害怕听起来像个菜鸟 我在卸载 Visual Studio 2013 update 1 时遇到问题 我怎么做 转到 控制面板 gt 程序 gt 程序和功能 gt 左侧栏上的 查看已安装的更新 然后向下滚动到 Microsoft Visual
  • 某些表的动态数据库备份

    我只需要备份主数据库中的一些表 其他表是参考表并且是静态的 因此不需要备份 我在 SD 卡上创建了一个新的空白数据库 我可以直接访问SD卡上的数据库还是需要在备份完成后复制它 真正的问题是我是否可以循环遍历每个记录中的字段或其他内容 这样我
  • 如何使用boost多精度生成正态随机数?

    我正在尝试使用 boost 的多精度从正态分布生成随机数 我可以从均匀分布生成随机数 但是当我尝试从标准正态分布生成随机数时 它报告错误 这是代码 以下来自来自 boost 的示例 http www boost org doc libs 1
  • Django 使用整数字段作为外键字段

    为了支持旧的 遗留 数据库 我们必须创建一个使用的表整数字段 as a 外键 to User表 这就是我们的模型的样子 class UserHistory user id models IntegerField null True blan
  • FusedLocationProviderClient requestLocationUpdates 不会触发上述 API 23 的 LocationCallBack

    我已经用尽了所有可能的方法来解决这个问题 在对我的应用程序进行调整之前 从技术上讲 我使用的是在 API 23 及更高版本中运行的相同代码 回调 在请求位置更新中 不在手机中触发 棉花糖及以上 但它在模拟器中运行良好 使用 Pixel 2