Android 6 要素1 权限

164 篇文章 0 订阅
117 篇文章 4 订阅

Android Marshmallow 的权限

1.权限组定义。

权限分为若干组。据谷歌,我们可以说,一个权限组放在一起相关的权限在一个单一的名称/标签。您可以将权限
一起使用<许可>的元素里面permissionGroup属性。
相同的权限组的分组权限都显示为一个组时审批权限,或检查其权限的应用程序时。

让我们来看看权限组标签的结构:

<permission-group android:description="string resource"
android:icon="drawable resource"
android:label="string resource"
android:name="string" />

如前述结构的元件可以被解释如下:
android:description:这是指用来描述组简单的文本。
android:icon:这是指从表示许可的可绘制资源的图标。
android:label:这是指该组一个简单的文本名称。
android:name:这是组的名称。它是用来将权限分配给特定的组。
下表显示了不同的类别是否有权限组的权限:

Permissions group
In-app purchases :Device and app history
Contacts :Calendar
Phone :Photos, media, and files
Wi-Fi connection information :Bluetooth connection information
Identity: Cellular data settings
SMS: Location
Microphone: Camera
Device ID and call information: Wearable sensors/activity data
Other

2.查看权限每个应用

你可以看一下权限使用设置应用程序或 adb 命令查看每个应用。

要使用这些设置应用程序,去 Settings | Apps

第二个选择是与AAPT命令使用adb shell命令:
1.列出所有与他们的安装路径沿线的应用程序。作为一个例子,让我们试着
查出使用以下命令的Facebook组的应用权限:
adb shell pm list packages –f

2.一旦我们得到了包的位置(APK),我们需要通过从设备拉出apk。
adb pull /data/app/com.facebook.groups-1/base.apk
3.我们的最后一步,显示的权限是使用的编译工具文件夹中找到AAPT
您的具体构建工具的版本:
aapt d permissions base.apk

利用adb命令,可以打印设备上的所有已知的权限。包管理器(PM)命令看起来像下面这样:
$ adb shell pm list permissions [options] <GROUP>
列表权限得到[选项]和<组>参数(可选)。
在这里,可以选择如下:
-g:这是指一组权限列表
-f:这将打印的所有信息
-s:这将打印一个简短的总结,这是用户看到屏幕上的什么时候检查权限或批准他们
-d:这看起来并仅打印权限被认为是危险的
-u:列出对用户可见的权限


3.理解android6权限 运行权限
Android6展示了新的权限模型,其中用户能够在应用程序运行直接管理应用程序的权限。谷歌已经改变了旧的权限模型,主要是为了能够更轻松,无摩擦装置和自动更新
对于用户以及应用开发者。这允许用户安装应用程序,而不需要提前授予应用程序需要的每个权限。用户可以安装不通过检查每个权限和衰退的安装阶段将应用程序由于单许可。
用户可以授予或撤销的权限安装的应用程序,使调整和选择,在用户手中的自由。
大多数的应用将需要更新目标的API23时,以解决这些问题。


4.编码时的权限考虑
好了,所有的解释之后,我们已经来到了编码部分,下面是用于处理权限密钥的方法:
Context.checkSelfPermission():这将检查您的应用程序是否已授予权限

Activity.requestPermission():这在运行时请求权限
即使您的应用程序还没有针对Android6,您应该测试应用程序准备来支持它。

5.测试权限
在Android6权限模型,您的应用程序必须询问用户在运行时单独的权限。有对遗留应用程序的兼容性有限的支持,
你应该测试您的应用程序,并测试版本,以确保它的支持。
您可以使用下面的测试指南,并与新的行为进行应用测试:
地图您的应用程序的权限。
测试流程与权限的授予与撤销。
adb命令shell是有帮助的我们检查权限:
清单按组应用程序的权限和状态可以使用应做到以下几点ADB命令:
adb shell pm list permissions -g
可以授予或使用下面的ADB语法撤消权限:
adb shell pm [grant|revoke] <permission.name>
您可以授予的权限和使用下面的ADB命令安装APK:
adb install -g <path_to_apk>

6.运行时权限的编码

if (checkSelfPermission(Manifest.permission.READ_CONTACTS) !=
PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},
SAMPLE_MATRIXY_READ_CONTACTS);
}
//Now this is our callback
@Override
public void onRequestPermissionsResult(int requestCode, String
permissions[], int[] grantResults) {
switch (requestCode) {

case SAMPLE_MATRIXY_READ_CONTACTS:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission granted - we can continue the feature flow.
} else {
// permission denied! - we should disable the functionality that
depends on this permission.
}
}
}

我们需要了解的常量:

public static final int PERMISSION_DENIED=-1 :
从API level 1开始, 权限不授予给定的包
public static final int PERMISSION_GRANTED=0 :
从API level 1开始, 权限授予给定的包


7.某些权限是正常的,可以放心使用

目前,被列为PROTECTION_NORMAL的权限如下:

android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
android.permission.ACCESS_NETWORK_STATE
android.permission.ACCESS_WIFI_STATE
android.permission.ACCESS_WIMAX_STATE
android.permission.BLUETOOTH
android.permission.BLUETOOTH_ADMIN
android.permission.BROADCAST_STICKY
android.permission.CHANGE_NETWORK_STATE
android.permission.CHANGE_WIFI_MULTICAST_STATE
android.permission.CHANGE_WIFI_STATE
android.permission.DISABLE_KEYGUARD
android.permission.EXPAND_STATUS_BAR
android.permission.FLASHLIGHT
android.permission.GET_ACCOUNTS
android.permission.GET_PACKAGE_SIZE
android.permission.INTERNET
android.permission.KILL_BACKGROUND_PROCESSES
android.permission.MODIFY_AUDIO_SETTINGS
android.permission.NFC
android.permission.PERSISTENT_ACTIVITY
android.permission.READ_SYNC_SETTINGS
android.permission.READ_SYNC_STATS
android.permission.READ_USER_DICTIONARY
android.permission.RECEIVE_BOOT_COMPLETED
android.permission.REORDER_TASKS
android.permission.SET_TIME_ZONE
android.permission.SET_WALLPAPER
android.permission.SET_WALLPAPER_HINTS
android.permission.SUBSCRIBED_FEEDS_READ
android.permission.TRANSMIT_IR
android.permission.VIBRATE
android.permission.WAKE_LOCK
android.permission.WRITE_SETTINGS
android.permission.WRITE_SYNC_SETTINGS
android.permission.WRITE_USER_DICTIONARY
com.android.alarm.permission.SET_ALARM
com.android.launcher.permission.INSTALL_SHORTCUT


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值