Android M中需要Runtime申请的权限

摘要

Android M (23)以上,需要对dangerous permissions进行运行时申请。本篇文章简单梳理一下权限相关的一些东东。

Normal and Dangerous Permissions

Normal Permissions:

原文:Normal permissions cover areas where your app needs to access data or resources outside the app’s sandbox, but where there’s very little risk to the user’s privacy or the operation of other apps
译文:那些对用用户的隐私及用户对其他app的操作的影响比较小得权限。

normal permissions如果app声明了,则系统会自动授予。

包括:
ACCESS_LOCATION_EXTRA_COMMANDS
ACCESS_NETWORK_STATE
ACCESS_NOTIFICATION_POLICY
ACCESS_WIFI_STATE
BLUETOOTH
BLUETOOTH_ADMIN
BROADCAST_STICKY
CHANGE_NETWORK_STATE
CHANGE_WIFI_MULTICAST_STATE
CHANGE_WIFI_STATE
DISABLE_KEYGUARD
EXPAND_STATUS_BAR
FLASHLIGHT
GET_PACKAGE_SIZE
INTERNET
KILL_BACKGROUND_PROCESSES
MODIFY_AUDIO_SETTINGS
NFC
READ_SYNC_SETTINGS
READ_SYNC_STATS
RECEIVE_BOOT_COMPLETED
REORDER_TASKS
REQUEST_INSTALL_PACKAGES
SET_TIME_ZONE
SET_WALLPAPER
SET_WALLPAPER_HINTS
TRANSMIT_IR
USE_FINGERPRINT
VIBRATE
WAKE_LOCK
WRITE_SYNC_SETTINGS
SET_ALARM
INSTALL_SHORTCUT
UNINSTALL_SHORTCUT

Dangerous Permissions:

原文:Dangerous permissions cover areas where the app wants data or resources that involve the user’s private information, or could potentially affect the user’s stored data or the operation of other apps
译文:那些对用用户的隐私及用户对其他app的操作的影响比较大得权限。

dangerous permissions就需要app在runtime申请了。为了便于申请,安卓特意提供了permission group的概念。

Permission Group

danerous permissions 是需要再runtime去申请的,这是前提。
他的作用在于:如果申请时,组内所有权限全都没有被授予,则会弹出dialog,提示用户选择是否授予。如果组内的权限有某一个被授予了,那被申请的权限会被自动授予。
对应关系如下:

这里写图片描述
这里写图片描述

Specail Permissions

原文:There are a couple of permissions that don’t behave like normal and dangerous permissions. SYSTEM_ALERT_WINDOW and WRITE_SETTINGS are particularly sensitive, so most apps should not use them.
译文:这两个权限SYSTEM_ALERT_WINDOW和WRITE_SETTINGS特别敏感,拿到这个东东会忍住不做坏事,任何app都不要用这两个权限。
但是还是可以申请的,只是方式不太一样。检查是否有此权限的方法也不太一样。

SYSTEM_ALERT_WINDOW申请方法

The app requests the user’s approval by sending an intent with action ACTION_MANAGE_OVERLAY_PERMISSION.
The app can check whether it has this authorization by calling Settings.canDrawOverlays()

Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
                Uri.parse("package:" + getPackageName()));
      startActivityForResult(intent, REQUEST_CODE);


WRITE_SETTINGS申请方法

The app requests the user’s approval by sending an intent with action ACTION_MANAGE_WRITE_SETTINGS. The app can check whether it has this authorization by calling Settings.System.canWrite().

Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS,
                Uri.parse("package:" + getPackageName()));
      startActivityForResult(intent, REQUEST_CODE);


References

1.http://developer.android.com/intl/zh-cn/guide/topics/security/permissions.html#normal-dangerous

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值