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

2023-11-21

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

ActivityCompat.requestPermissions(context, PERMISSIONS_LOCATION, REQUEST_LOCATION);

我想避免保存对单例中任何活动的引用,因为这是内存泄漏的必然秘诀,而且我更希望单例根本不保存活动,因为它在调用的所有活动中都需要无用的代码(它们中的每一个都必须在 getInstance() 中包含一个额外的参数,以便单例能够保存活动 - 单例需要从以下位置获取活动某处).

现在,从技术上讲,我可以获取一个活动,然后在请求许可后直接将其设置为空,但是,在我调用单例的每个活动中,这仍然留下大量无用的活动参数。对于我没有看到的这个问题,是否有更优雅的解决方案?


requestPermissions 的文档说,如果您没有在清单中包含权限,则 Activity 参数是您想要显示弹出窗口的目标活动,为此,该方法要求您传递活动而不是上下文,因为完成请求权限任务后,它将向调用活动返回结果(即作为参数传递给方法的活动)。如果您执意要通过单例实现此操作,我建议您创建一个接受参数中的活动和回调的函数,因为如果授予或未授予权限,您将需要处理回调

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:ActivityCompat.requestPermissions 需要活动而不是上下文:/ 的相关文章

随机推荐