我再一次需要你的帮助stackoverflowers!
我一直在开发SDK,现在需要验证用户是否授予了位置或文件写入等权限。
验证很好,但我认为如果需要,我应该请求许可。问题是,我绝对无法访问任何活动。我可能会使用appContext来检查权限,但是我无法像这样收听onRequestPermissionsResult。
是否有一种聪明的方式可以请求我方的许可,或者我是否应该让开发人员使用我的SDK及时询问权限,以便我可以使用我(以及他们)稍后需要的功能?
感谢您的帮助!
答案 0 :(得分:3)
我个人更喜欢SDK让我作为开发人员处理何时询问权限,因为我可能需要给用户一些警告,提前处理或在提示之前做其他事情。
如果您查看Google Play位置服务等SDK,就会将开发人员的位置权限留给处理人员,只需向可能失败的调用添加警告,说明它可能会抛出SecurityException
。
他们还使用了一个名为android.support.annotation.RequiresPermission
的注释,您可以使用它来帮助SDK的用户。使用此注释将为您提供上述异常警告/错误。
示例:
@RequiresPermission(anyOf = {Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION})
public abstract Location getLastKnownLocation(String provider);
并且结果
答案 1 :(得分:0)
我认为你必须在文档中声明权限并向你的sdk用户委派权限 - 麻烦,因为库可能是 Model 的一部分,并且它不能用UI操作(权限对话框)< / p>