如何在JobService中调用活动上下文以获得权限?

问题描述

要在JobScheduler中获取位置,我需要获取活动上下文以在ActivityCompat.requestPermissions中调用onStartJob

ActivityCompat.requestPermissions({},permissions,REQUEST_CODE);

但是我无法将活动上下文传递给JobScheduler。

  class GetLocationJob : JobService() {

    override fun onStopJob(params: JobParameters?): Boolean {
        ...
    }

    override fun onStartJob(params: JobParameters?): Boolean {
        
      // Check Permission
      if (ActivityCompat.checkSelfPermission(
          this,Manifest.permission.ACCESS_FINE_LOCATION
        ) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
          this,Manifest.permission.ACCESS_COARSE_LOCATION
        ) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
          this,Manifest.permission.ACCESS_BACKGROUND_LOCATION
        ) != PackageManager.PERMISSION_GRANTED
      ) {
        val permissions = arrayOf(
          Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_BACKGROUND_LOCATION
        )

        // can't pass activity context 
        ActivityCompat.requestPermissions(this,REQUEST_CODE);
      }
    

    // 2. create client
    fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)

    // 3. get location
    fusedLocationClient.lastLocation
      .addOnSuccessListener { location: Location? ->
        println(location)
        if (location != null) {
          println(location.latitude)
        }
        if (location != null) {
          println(location.longitude)
        }
      }

    ...


    }
  }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...