TimurVI Asked:2020-01-05 01:51:24 +0800 CST2020-01-05 01:51:24 +0800 CST 2020-01-05 01:51:24 +0800 CST 23 API以来的权限请求(permissions)在运行时是什么意思? 772 23 API以in开头的请求权限(permissions)是什么意思runtime? 仅仅在 Manifest 中写下必要的权限还不够吗? android 1 个回答 Voted Best Answer TimurVI 2020-01-05T01:51:24+08:002020-01-05T01:51:24+08:00 系统权限分为两类。 正常- 不会对用户隐私构成直接威胁的那些。系统会自动批准权限。 不安全- 对用户隐私构成威胁的那些。对于此类权限,系统将请求用户明确批准其使用。 在任何版本Android中,这两个类别的权限仍然需要在 Manifest 中声明。声明的“效果”取决于应用程序的版本Android和级别target SDK。 Android 5.1(及以下)和target SDK - 22(及以下) - 用户只能在安装/更新应用程序时批准应用程序的权限 Android 6.0(及以上)和target SDK - 23(及以下及以上) - 用户可以在应用程序安装后批准/撤销权限(permissions)。与他们合作时(runtime)。 如果您的应用程序需要“不安全”权限,您必须在每次执行需要该权限的操作时检查您是否拥有该权限。 一些方法: ContextCompat.checkSelfPermission() - 方法检查您(应用程序)是否有权限。如果有返回PackageManager.PERMISSION_GRANTED,则应用程序可以继续请求的操作。PackageManager.PERMISSION_DENIED如果不是,则返回,应用程序必须显式请求权限。 shouldShowRequestPermissionRationale() - 该方法允许您确定是否需要向用户解释请求权限的需要。true如果应用程序先前已请求此权限并且用户拒绝了该请求,则返回。false如果设备策略不允许应用拥有此权限,并且用户之前在请求权限时选择了“不再询问”,则返回 requestPermissions() - 方法通过显示对话框请求权限。应用程序无法自定义或修改此对话框。如果用户需要解释需要某些权限,则必须在调用此方法之前完成。 onRequestPermissionsResult() - 在显示对话框并且用户响应后调用该方法。应用程序必须重写此方法以查明是否已授予权限 资源
系统权限分为两类。
不安全- 对用户隐私构成威胁的那些。对于此类权限,系统将请求用户明确批准其使用。
在任何版本
Android
中,这两个类别的权限仍然需要在 Manifest 中声明。声明的“效果”取决于应用程序的版本Android
和级别target SDK
。Android 5.1
(及以下)和target SDK - 22
(及以下) - 用户只能在安装/更新应用程序时批准应用程序的权限Android 6.0
(及以上)和target SDK - 23
(及以下及以上) - 用户可以在应用程序安装后批准/撤销权限(permissions)。与他们合作时(runtime
)。如果您的应用程序需要“不安全”权限,您必须在每次执行需要该权限的操作时检查您是否拥有该权限。
一些方法:
PackageManager.PERMISSION_GRANTED
,则应用程序可以继续请求的操作。PackageManager.PERMISSION_DENIED
如果不是,则返回,应用程序必须显式请求权限。true
如果应用程序先前已请求此权限并且用户拒绝了该请求,则返回。false
如果设备策略不允许应用拥有此权限,并且用户之前在请求权限时选择了“不再询问”,则返回资源