Android:ActivityCompat.requestPermissions 需要 activity 而不是上下文:/

Android: ActivityCompat.requestPermissions requires activity and not context :/

我正在调用 ActivityCompat.requestPermissions 以获得 android M 下的权限,但是,这需要在参数中使用 activity。这很好,除了我想从单例调用它,并且单例可以被应用程序中的任何 activity 使用。

ActivityCompat.requestPermissions(context, PERMISSIONS_LOCATION, REQUEST_LOCATION);

我想避免在单例中持有对任何 activity 的引用,因为这是内存泄漏的必经之路,而且我更希望单例不持有 activity都是因为它在所有调用的活动中都需要无用的代码(每个活动都必须在 getInstance() 中包含一个额外的参数,以便单身人士持有 activity - 单身人士需要从 某处 获取 activity)。

现在,我可以在技术上获得一个 activity,然后在我请求许可后直接将其设置为 null,但是这仍然给我留下大量无用的 activity 论据 activity 我打电话给单身人士的地方。是否有更优雅的解决方案来解决我只是没有看到的这个问题?

关于 requestPermissions 的文档说,activity 参数是目标 activity 如果您没有在清单中包含权限,则您希望在其中显示弹出窗口,为此目的方法要求您传递 activity 而不是上下文,因为在完成请求权限任务后,它将 return 结果传递给调用 activity(即 activity作为参数传递给方法)。如果你非常坚持通过你的单例实现这个,我建议你创建一个函数来接受参数中的 activity 和回调,因为无论是否授予权限,你都需要处理回调