Android 6.0 权限管理 实例

来源:互联网 发布:香港警匪片推荐知乎 编辑:程序博客网 时间:2024/06/07 04:22

Android 6.0 对权限有大的变动!

分为普通权限(和以前一样,不需运行时检查)

危险权限

    PROTECTION_NORMAL类权限

    当用户安装或更新应用时,系统将授予应用所请求的属于 PROTECTION_NORMAL 的所有权限(安装时授权的一类基本权限)。这类权限包括:

<span style="font-size:14px;">android.permission.ACCESS_LOCATION_EXTRA_COMMANDSandroid.permission.ACCESS_NETWORK_STATEandroid.permission.ACCESS_NOTIFICATION_POLICYandroid.permission.ACCESS_WIFI_STATEandroid.permission.ACCESS_WIMAX_STATEandroid.permission.BLUETOOTHandroid.permission.BLUETOOTH_ADMINandroid.permission.BROADCAST_STICKYandroid.permission.CHANGE_NETWORK_STATEandroid.permission.CHANGE_WIFI_MULTICAST_STATEandroid.permission.CHANGE_WIFI_STATEandroid.permission.CHANGE_WIMAX_STATEandroid.permission.DISABLE_KEYGUARDandroid.permission.EXPAND_STATUS_BARandroid.permission.FLASHLIGHTandroid.permission.GET_ACCOUNTSandroid.permission.GET_PACKAGE_SIZEandroid.permission.INTERNETandroid.permission.KILL_BACKGROUND_PROCESSESandroid.permission.MODIFY_AUDIO_SETTINGSandroid.permission.NFCandroid.permission.READ_SYNC_SETTINGSandroid.permission.READ_SYNC_STATSandroid.permission.RECEIVE_BOOT_COMPLETEDandroid.permission.REORDER_TASKSandroid.permission.REQUEST_INSTALL_PACKAGESandroid.permission.SET_TIME_ZONEandroid.permission.SET_WALLPAPERandroid.permission.SET_WALLPAPER_HINTSandroid.permission.SUBSCRIBED_FEEDS_READandroid.permission.TRANSMIT_IRandroid.permission.USE_FINGERPRINTandroid.permission.VIBRATEandroid.permission.WAKE_LOCKandroid.permission.WRITE_SYNC_SETTINGScom.android.alarm.permission.SET_ALARMcom.android.launcher.permission.INSTALL_SHORTCUTcom.android.launcher.permission.UNINSTALL_SHORTCUT</span>
只需要在AndroidManifest.xml中简单声明这些权限就好,安装时就授权。不需要每次使用时都检查权限,而且用户不能取消以上授权。

危险权限 :

如下表:

blob.png

同一组的任何一个权限被授权了,其他权限也自动被授权。例如,一旦WRITE_CONTACTS被授权了,app也有READ_CONTACTS和GET_ACCOUNTS了。

使用示例:

在使用上面的危险权限时,要加入

private void checkCallPhonePermission() {                // 以打电话权限为例            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {                    requestPermissions(new String[]{Manifest.permission.CALL_PHONE}, CALL_CODE);                }else{                    // TODO:  要进行的操作  系统小于6.0 时                }            } else {                // TODO: 要进行的操作  有权限时            }    }

然后进行回调设置:

 @Override    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {        switch (requestCode) {            case CALL_CODE:                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {                    // Permission Granted                    Log.d("-----","WRITE_CONTACTS OK") ;                    // TODO: 要进行的操作                } else {                    // Permission Denied                    Log.d("-----","WRITE_CONTACTS Denied") ;                    Toast.makeText(MainActivity.this, "WRITE_CONTACTS Denied", Toast.LENGTH_SHORT)                            .show();                }                break;            default:                break;        }    }


详情参考: 
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0830/3387.html


0 0
原创粉丝点击