您的位置:首页 > 移动开发 > Android开发

Android M中需要Runtime申请的权限

2015-11-11 17:55 441 查看

摘要

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android权限