Android M onRequestPermissionsResult in non Activity

2022-09-01 07:47:10

我有一个应用程序需要查找用户位置,并且位置在各种类中获取,所以我编写了一个单独的类(不是活动类),使用位置服务获取用户位置,它在Android M下工作正常,但需要在Android M中具有运行时权限,我想检查我的位置类中的权限,我知道如何检查它们,但我无法使用 onRequestPermissionsResult 方法在我的位置类中,因为我的位置类不从任何活动扩展。

那么我应该做些什么来实现这一目标呢?任何帮助/线索是值得赞赏的 提前感谢


答案 1

由于 public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults)ActivityCompat.OnRequestPermissionsResultCallback 接口的抽象方法。查看文档

只需在所需的类中实现此接口即可完成。例如

class location implements  ActivityCompat.OnRequestPermissionsResultCallback{ }

现在只需覆盖 onRequestPermissionsResult()

 @Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) {
    switch (requestCode) {
     // case Statements
    }
}

答案 2

欢迎您从非UI类调用,因为这只需要一些.checkSelfPermission()Context

但是,您必须调用某些活动或片段。您可以覆盖一活动或片段。这与调用和实现 没有什么不同。requestPermissions()onRequestPermissionsResult()startActivityForResult()onActivityResult()

我们的想法是,在执行涉及处理位置的非 UI 类的任何操作之前,先请求权限。


推荐