Android:获取本地化的权限组名称

5
在棉花糖的运行时权限中,用户可以选择在权限请求中选择“不再询问”。在这种情况下,我们必须重定向用户到应用程序设置,让他们为应用程序启用权限。此外,Android权限是基于组的,显示应用程序需要的权限组名称将非常方便,然后再将用户发送到设置。
我已经在android.Manifest中看到了诸如“android.permission-group.LOCATION”之类的字符串。是否可以通过编程方式获取权限组名称?
1个回答

6

PackageManager 上的 getPermissionGroupInfo() 方法会返回指定权限组名称(android.permission-group.LOCATION)的 PermissionGroupInfo 对象。然后,调用该对象的 loadLabel() 方法,并将 PackageManager 作为输入参数传入,以获取权限组的可读名称。该名称应根据用户选择的设备语言环境进行本地化。


Loadlabel() 总是返回本地化字符串,但我想要非本地化字符串。是否有任何 API 可以检索非本地化字符串? - parul
@parul:什么是“非本地化字符串”? - CommonsWare
它在Android 10中无法工作,会抛出“NameNotFoundException”异常。 - Zijian
@Zijian:我不知道“它”是什么。也许你正在请求一个在Android 10上不存在的权限组。 - CommonsWare
@CommonsWare final PackageManager pm = App.app.getPackageManager(); final PermissionGroupInfo info = pm.getPermissionGroupInfo(grpupName, 0); return info.loadLabel(pm); "pm.getPermissionGroupInfo" 在 Android 10 中会抛出 NameNotFoundException 异常。但在其他 Android 版本中可以正常工作。 - Zijian
1
@Zijian:我猜你看到的是这个错误报告的精简版,标记为“按预期工作”。此处链接 - CommonsWare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接