Android:检查是不是在另一个类中授予权限,而不是在 MainActivity
Posted
技术标签:
【中文标题】Android:检查是不是在另一个类中授予权限,而不是在 MainActivity【英文标题】:Android: Check if Permisson is granted in another Class, not in the MainActivityAndroid:检查是否在另一个类中授予权限,而不是在 MainActivity 【发布时间】:2021-12-19 17:31:02 【问题描述】:我是 android 应用程序开发的新手,我真的很想知道是否有一种方法可以检查另一个类(一个收集一些位置数据的前台服务),如果在主 Activity 中提供了位置权限。
在我的主要活动中,我在应用启动时直接请求权限,如下所示:
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
但是,如果我尝试执行这个函数,我会得到一个空指针引用。我在这里错过了什么?
谢谢!
【问题讨论】:
在检查权限之前不要开始其他课程。 【参考方案1】:您不能向服务请求权限。原因是当请求权限对话框出现时,用户自然会认为它属于前台应用程序。这种混乱是谷歌不允许这样做的原因。我最好的建议是启动一个 Activity,然后请求许可。
【讨论】:
以上是关于Android:检查是不是在另一个类中授予权限,而不是在 MainActivity的主要内容,如果未能解决你的问题,请参考以下文章
如何检查用户是不是已在 React Native Android 中授予相机权限?
在 Xamarin android 代码中找不到“ACCESS_BACKGROUND_LOCATION”权限。我需要检查用户是不是已授予此权限