Android:ActivityCompat.requestPermissions需要活动而非上下文:/

时间:2015-08-19 13:40:38

标签: java android singleton

我正在调用ActivityCompat.requestPermissions以获取android M下的权限,但是,这需要参数中的活动。这很好,除了我想从单身人士调用它,单身人士可以被应用程序中的任何活动使用。

ActivityCompat.requestPermissions(context, PERMISSIONS_LOCATION, REQUEST_LOCATION);

我想避免对单例中的任何活动进行引用,因为这是内存泄漏的可靠方法,而且我更喜欢单例根本不进行活动,因为它在所有活动中都需要无用的代码该调用(它们中的每一个都必须在getInstance()中包含一个额外的参数,以便单例持有一个活动 - 单例需要从某处获取活动)。

现在,我可以在技术上获得一个活动,然后在我请求权限后将其设置为null,但是在我调用单例的每个活动中,这仍然留下了大量无用的活动参数。是否有一个更优雅的解决方案,我只是没有看到这个问题?

1 个答案:

答案 0 :(得分:6)

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