google在android 6.0系统上增加了权限申请机制,目的是保护用户的隐私,对我个人来说感觉很烦,如果一个app用到了很多权限,那么多弹一个框告诉用户,废话不多说,权限机制分三个步骤
第一步:判断是否申请了权限
第二步:没有申请,则要申请权限
第三步:权限回调处理你的业务,这是在用户同意授权的情况下
为了适配6.0以上的系统,还必须在AndroidManifest.xml文件中权限该添加的还是要添加,现在就以打电话为例,
第一步:判断是否申请了权限api:
ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED
这些权限字符串全都定义在permission内部类中了:
public final class Manifest {
public Manifest() { /* compiled code */ }
public static final class permission_group {
public static final java.lang.String CALENDAR = "android.permission-group.CALENDAR";
public static final java.lang.String CAMERA = "android.permission-group.CAMERA";
public static final java.lang.String CONTACTS = "android.permission-group.CONTACTS";
public static final java.lang.String LOCATION = "android.permission-group.LOCATION";
public static final java.lang.String MICROPHONE = "android.permission-group.MICROPHONE";
public static final java.lang.String PHONE = "android.permission-group.PHONE";
public static final java.lang.String SENSORS = "android.permission-group.SENSORS";
public static final java.lang.String SMS = "android.permission-group.SMS";
public static final java.lang.String STORAGE = "android.permission-group.STORAGE";
public permission_group() { /* compiled code */ }
}
public static final class permission {
public static final java.lang.String ACCESS_CHECKIN_PROPERTIES = "android.permission.ACCESS_CHECKIN_PROPERTIES";
public static final java.lang.String ACCESS_COARSE_LOCATION = "android.permission.ACCESS_COARSE_LOCATION";
public static final java.lang.String ACCESS_FINE_LOCATION = "android.permission.ACCESS_FINE_LOCATION";
public static final java.lang.String ACCESS_LOCATION_EXTRA_COMMANDS = "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS";
public static final java.lang.String ACCESS_NETWORK_STATE = "android.permission.ACCESS_NETWORK_STATE";
public static final java.lang.String ACCESS_NOTIFICATION_POLICY = "android.permission.ACCESS_NOTIFICATION_POLICY";
public static final java.lang.String ACCESS_WIFI_STATE = "android.permission.ACCESS_WIFI_STATE";
public static final java.lang.String ACCOUNT_MANAGER = "android.permission.ACCOUNT_MANAGER";
public static final java.lang.String ADD_VOICEMAIL = "com.android.voicemail.permission.ADD_VOICEMAIL";
public static final java.lang.String BATTERY_STATS = "android.permission.BATTERY_STATS";
public static final java.lang.String BIND_ACCESSIBILITY_SERVICE = "android.permission.BIND_ACCESSIBILITY_SERVICE";
public static final java.lang.String BIND_APPWIDGET = "android.permission.BIND_APPWIDGET";
/**
* @deprecated
*/
@java.lang.Deprecated
public static final java.lang.String BIND_CARRIER_MESSAGING_SERVICE = "android.permission.BIND_CARRIER_MESSAGING_SERVICE";
public static final java.lang.String BIND_CARRIER_SERVICES = "android.permission.BIND_CARRIER_SERVICES";
public static final java.lang.String BIND_CHOOSER_TARGET_SERVICE = "android.permission.BIND_CHOOSER_TARGET_SERVICE";
public static final java.lang.String BIND_CONDITION_PROVIDER_SERVICE = "android.permission.BIND_CONDITION_PROVIDER_SERVICE";
public static final java.lang.String BIND_DEVICE_ADMIN = "android.permission.BIND_DEVICE_ADMIN";
public static final java.lang.String BIND_DREAM_SERVICE = "android.permission.BIND_DREAM_SERVICE";
public static final java.lang.String BIND_INCALL_SERVICE = "android.permission.BIND_INCALL_SERVICE";
public static final java.lang.String BIND_INPUT_METHOD = "android.permission.BIND_INPUT_METHOD";
public static final java.lang.String BIND_MIDI_DEVICE_SERVICE = "android.permission.BIND_MIDI_DEVICE_SERVICE";
public static final java.lang.String BIND_NFC_SERVICE = "android.permission.BIND_NFC_SERVICE";
public static final java.lang.String BIND_NOTIFICATION_LISTENER_SERVICE = "android.permission.BIND_NOTIFICATION_LISTENER_SERVICE";
public static final java.lang.String BIND_PRINT_SERVICE = "android.permission.BIND_PRINT_SERVICE";
public static final java.lang.String BIND_QUICK_SETTINGS_TILE = "android.permission.BIND_QUICK_SETTINGS_TILE";
public static final java.lang.String BIND_REMOTEVIEWS = "android.permission.BIND_REMOTEVIEWS";
public static final java.lang.String BIND_SCREENING_SERVICE = "android.permission.BIND_SCREENING_SERVICE";
public static final java.lang.String BIND_TELECOM_CONNECTION_SERVICE = "android.permission.BIND_TELECOM_CONNECTION_SERVICE";
public static final java.lang.String BIND_TEXT_SERVICE = "android.permission.BIND_TEXT_SERVICE";
public static final java.lang.String BIND_TV_INPUT = "android.permission.BIND_TV_INPUT";
public static final java.lang.String BIND_VOICE_INTERACTION = "android.permission.BIND_VOICE_INTERACTION";
public static final java.lang.String BIND_VPN_SERVICE = "android.permission.BIND_VPN_SERVICE";
public static final java.lang.String BIND_VR_LISTENER_SERVICE = "android.permission.BIND_VR_LISTENER_SERVICE";
public static final java.lang.String BIND_WALLPAPER = "android.permission.BIND_WALLPAPER";
p