Android:检查Permisson是否在另一个类中被授予,而不是在MainActivity中



我是安卓应用程序开发的新手,我真的很想知道如果在主活动中给出了位置权限,是否有办法签入另一个class(收集一些位置数据的前台服务(。

在我的主要活动中,我在应用程序启动时直接请求权限,如下所示:

private fun requestPermissions() {
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION),
PERMISSION_ID
)
}

override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == PERMISSION_ID) {
if ((grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
Toast.makeText(this, "Right Permissions Granted", Toast.LENGTH_LONG).show()
}
}
}
}

它正在工作,我可以授予我的应用程序访问该位置的权限。要在我的另一个I类中使用函数,我需要检查权限是否被授予,我这样做:

fun dummy(){
if (ActivityCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_FINE_LOCATION
) == PackageManager.PERMISSION_GRANTED
) {
// do work that needs the location permission
}
}

但是,如果我尝试执行这个函数,我会得到一个空指针引用。我在这里错过了什么?

谢谢!

您不能向服务请求权限。原因是当出现请求权限对话框时,用户自然会认为它属于前台应用程序。困惑的是谷歌为什么不允许它。我最好的建议是启动一个活动,然后请求许可。

相关内容

  • 没有找到相关文章

最新更新