android 6.0权限申请机制

来源:互联网 发布:2015年网络银行交易额 编辑:程序博客网 时间:2024/06/02 04:23

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";        public static final java.lang.String BLUETOOTH = "android.permission.BLUETOOTH";        public static final java.lang.String BLUETOOTH_ADMIN = "android.permission.BLUETOOTH_ADMIN";        public static final java.lang.String BLUETOOTH_PRIVILEGED = "android.permission.BLUETOOTH_PRIVILEGED";        public static final java.lang.String BODY_SENSORS = "android.permission.BODY_SENSORS";        public static final java.lang.String BROADCAST_PACKAGE_REMOVED = "android.permission.BROADCAST_PACKAGE_REMOVED";        public static final java.lang.String BROADCAST_SMS = "android.permission.BROADCAST_SMS";        public static final java.lang.String BROADCAST_STICKY = "android.permission.BROADCAST_STICKY";        public static final java.lang.String BROADCAST_WAP_PUSH = "android.permission.BROADCAST_WAP_PUSH";        public static final java.lang.String CALL_PHONE = "android.permission.CALL_PHONE";        public static final java.lang.String CALL_PRIVILEGED = "android.permission.CALL_PRIVILEGED";        public static final java.lang.String CAMERA = "android.permission.CAMERA";        public static final java.lang.String CAPTURE_AUDIO_OUTPUT = "android.permission.CAPTURE_AUDIO_OUTPUT";        public static final java.lang.String CAPTURE_SECURE_VIDEO_OUTPUT = "android.permission.CAPTURE_SECURE_VIDEO_OUTPUT";        public static final java.lang.String CAPTURE_VIDEO_OUTPUT = "android.permission.CAPTURE_VIDEO_OUTPUT";        public static final java.lang.String CHANGE_COMPONENT_ENABLED_STATE = "android.permission.CHANGE_COMPONENT_ENABLED_STATE";        public static final java.lang.String CHANGE_CONFIGURATION = "android.permission.CHANGE_CONFIGURATION";        public static final java.lang.String CHANGE_NETWORK_STATE = "android.permission.CHANGE_NETWORK_STATE";        public static final java.lang.String CHANGE_WIFI_MULTICAST_STATE = "android.permission.CHANGE_WIFI_MULTICAST_STATE";        public static final java.lang.String CHANGE_WIFI_STATE = "android.permission.CHANGE_WIFI_STATE";        public static final java.lang.String CLEAR_APP_CACHE = "android.permission.CLEAR_APP_CACHE";        public static final java.lang.String CONTROL_LOCATION_UPDATES = "android.permission.CONTROL_LOCATION_UPDATES";        public static final java.lang.String DELETE_CACHE_FILES = "android.permission.DELETE_CACHE_FILES";        public static final java.lang.String DELETE_PACKAGES = "android.permission.DELETE_PACKAGES";        public static final java.lang.String DIAGNOSTIC = "android.permission.DIAGNOSTIC";        public static final java.lang.String DISABLE_KEYGUARD = "android.permission.DISABLE_KEYGUARD";        public static final java.lang.String DUMP = "android.permission.DUMP";        public static final java.lang.String EXPAND_STATUS_BAR = "android.permission.EXPAND_STATUS_BAR";        public static final java.lang.String FACTORY_TEST = "android.permission.FACTORY_TEST";        public static final java.lang.String GET_ACCOUNTS = "android.permission.GET_ACCOUNTS";        public static final java.lang.String GET_ACCOUNTS_PRIVILEGED = "android.permission.GET_ACCOUNTS_PRIVILEGED";        public static final java.lang.String GET_PACKAGE_SIZE = "android.permission.GET_PACKAGE_SIZE";        /**         * @deprecated         */        @java.lang.Deprecated        public static final java.lang.String GET_TASKS = "android.permission.GET_TASKS";        public static final java.lang.String GLOBAL_SEARCH = "android.permission.GLOBAL_SEARCH";        public static final java.lang.String INSTALL_LOCATION_PROVIDER = "android.permission.INSTALL_LOCATION_PROVIDER";        public static final java.lang.String INSTALL_PACKAGES = "android.permission.INSTALL_PACKAGES";        public static final java.lang.String INSTALL_SHORTCUT = "com.android.launcher.permission.INSTALL_SHORTCUT";        public static final java.lang.String INTERNET = "android.permission.INTERNET";        public static final java.lang.String KILL_BACKGROUND_PROCESSES = "android.permission.KILL_BACKGROUND_PROCESSES";        public static final java.lang.String LOCATION_HARDWARE = "android.permission.LOCATION_HARDWARE";        public static final java.lang.String MANAGE_DOCUMENTS = "android.permission.MANAGE_DOCUMENTS";        public static final java.lang.String MASTER_CLEAR = "android.permission.MASTER_CLEAR";        public static final java.lang.String MEDIA_CONTENT_CONTROL = "android.permission.MEDIA_CONTENT_CONTROL";        public static final java.lang.String MODIFY_AUDIO_SETTINGS = "android.permission.MODIFY_AUDIO_SETTINGS";        public static final java.lang.String MODIFY_PHONE_STATE = "android.permission.MODIFY_PHONE_STATE";        public static final java.lang.String MOUNT_FORMAT_FILESYSTEMS = "android.permission.MOUNT_FORMAT_FILESYSTEMS";        public static final java.lang.String MOUNT_UNMOUNT_FILESYSTEMS = "android.permission.MOUNT_UNMOUNT_FILESYSTEMS";        public static final java.lang.String NFC = "android.permission.NFC";        public static final java.lang.String PACKAGE_USAGE_STATS = "android.permission.PACKAGE_USAGE_STATS";        /**         * @deprecated         */        @java.lang.Deprecated        public static final java.lang.String PERSISTENT_ACTIVITY = "android.permission.PERSISTENT_ACTIVITY";        public static final java.lang.String PROCESS_OUTGOING_CALLS = "android.permission.PROCESS_OUTGOING_CALLS";        public static final java.lang.String READ_CALENDAR = "android.permission.READ_CALENDAR";        public static final java.lang.String READ_CALL_LOG = "android.permission.READ_CALL_LOG";        public static final java.lang.String READ_CONTACTS = "android.permission.READ_CONTACTS";        public static final java.lang.String READ_EXTERNAL_STORAGE = "android.permission.READ_EXTERNAL_STORAGE";        public static final java.lang.String READ_FRAME_BUFFER = "android.permission.READ_FRAME_BUFFER";        /**         * @deprecated         */        @java.lang.Deprecated        public static final java.lang.String READ_INPUT_STATE = "android.permission.READ_INPUT_STATE";        public static final java.lang.String READ_LOGS = "android.permission.READ_LOGS";        public static final java.lang.String READ_PHONE_STATE = "android.permission.READ_PHONE_STATE";        public static final java.lang.String READ_SMS = "android.permission.READ_SMS";        public static final java.lang.String READ_SYNC_SETTINGS = "android.permission.READ_SYNC_SETTINGS";        public static final java.lang.String READ_SYNC_STATS = "android.permission.READ_SYNC_STATS";        public static final java.lang.String READ_VOICEMAIL = "com.android.voicemail.permission.READ_VOICEMAIL";        public static final java.lang.String REBOOT = "android.permission.REBOOT";        public static final java.lang.String RECEIVE_BOOT_COMPLETED = "android.permission.RECEIVE_BOOT_COMPLETED";        public static final java.lang.String RECEIVE_MMS = "android.permission.RECEIVE_MMS";        public static final java.lang.String RECEIVE_SMS = "android.permission.RECEIVE_SMS";        public static final java.lang.String RECEIVE_WAP_PUSH = "android.permission.RECEIVE_WAP_PUSH";        public static final java.lang.String RECORD_AUDIO = "android.permission.RECORD_AUDIO";        public static final java.lang.String REORDER_TASKS = "android.permission.REORDER_TASKS";        public static final java.lang.String REQUEST_IGNORE_BATTERY_OPTIMIZATIONS = "android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS";        public static final java.lang.String REQUEST_INSTALL_PACKAGES = "android.permission.REQUEST_INSTALL_PACKAGES";        /**         * @deprecated         */        @java.lang.Deprecated        public static final java.lang.String RESTART_PACKAGES = "android.permission.RESTART_PACKAGES";        public static final java.lang.String SEND_RESPOND_VIA_MESSAGE = "android.permission.SEND_RESPOND_VIA_MESSAGE";        public static final java.lang.String SEND_SMS = "android.permission.SEND_SMS";        public static final java.lang.String SET_ALARM = "com.android.alarm.permission.SET_ALARM";        public static final java.lang.String SET_ALWAYS_FINISH = "android.permission.SET_ALWAYS_FINISH";        public static final java.lang.String SET_ANIMATION_SCALE = "android.permission.SET_ANIMATION_SCALE";        public static final java.lang.String SET_DEBUG_APP = "android.permission.SET_DEBUG_APP";        /**         * @deprecated         */        @java.lang.Deprecated        public static final java.lang.String SET_PREFERRED_APPLICATIONS = "android.permission.SET_PREFERRED_APPLICATIONS";        public static final java.lang.String SET_PROCESS_LIMIT = "android.permission.SET_PROCESS_LIMIT";        public static final java.lang.String SET_TIME = "android.permission.SET_TIME";        public static final java.lang.String SET_TIME_ZONE = "android.permission.SET_TIME_ZONE";        public static final java.lang.String SET_WALLPAPER = "android.permission.SET_WALLPAPER";        public static final java.lang.String SET_WALLPAPER_HINTS = "android.permission.SET_WALLPAPER_HINTS";        public static final java.lang.String SIGNAL_PERSISTENT_PROCESSES = "android.permission.SIGNAL_PERSISTENT_PROCESSES";        public static final java.lang.String STATUS_BAR = "android.permission.STATUS_BAR";        public static final java.lang.String SYSTEM_ALERT_WINDOW = "android.permission.SYSTEM_ALERT_WINDOW";        public static final java.lang.String TRANSMIT_IR = "android.permission.TRANSMIT_IR";        public static final java.lang.String UNINSTALL_SHORTCUT = "com.android.launcher.permission.UNINSTALL_SHORTCUT";        public static final java.lang.String UPDATE_DEVICE_STATS = "android.permission.UPDATE_DEVICE_STATS";        public static final java.lang.String USE_FINGERPRINT = "android.permission.USE_FINGERPRINT";        public static final java.lang.String USE_SIP = "android.permission.USE_SIP";        public static final java.lang.String VIBRATE = "android.permission.VIBRATE";        public static final java.lang.String WAKE_LOCK = "android.permission.WAKE_LOCK";        public static final java.lang.String WRITE_APN_SETTINGS = "android.permission.WRITE_APN_SETTINGS";        public static final java.lang.String WRITE_CALENDAR = "android.permission.WRITE_CALENDAR";        public static final java.lang.String WRITE_CALL_LOG = "android.permission.WRITE_CALL_LOG";        public static final java.lang.String WRITE_CONTACTS = "android.permission.WRITE_CONTACTS";        public static final java.lang.String WRITE_EXTERNAL_STORAGE = "android.permission.WRITE_EXTERNAL_STORAGE";        public static final java.lang.String WRITE_GSERVICES = "android.permission.WRITE_GSERVICES";        public static final java.lang.String WRITE_SECURE_SETTINGS = "android.permission.WRITE_SECURE_SETTINGS";        public static final java.lang.String WRITE_SETTINGS = "android.permission.WRITE_SETTINGS";        public static final java.lang.String WRITE_SYNC_SETTINGS = "android.permission.WRITE_SYNC_SETTINGS";        public static final java.lang.String WRITE_VOICEMAIL = "com.android.voicemail.permission.WRITE_VOICEMAIL";        public permission() { /* compiled code */ }    }
运行时权限分为Noraml和Dangerous Permission或者Dangerous Permission Group

可以使用adb shell pm list permissions -d -g命令查看危险权限组

D:\study\TvView>adb shell pm list permissions -d -g
adb server version (31) doesn't match this client (36); killing...
error: protocol fault (couldn't read status): Connection reset by peer
* daemon started successfully *
Dangerous Permissions:


group:android.permission-group.PHONE_CALLS
  permission:android.permission.READ_PHONE_STATE
  permission:android.permission.CALL_PHONE
  permission:android.permission.USE_SIP
  permission:android.permission.PROCESS_OUTGOING_CALLS


group:android.permission-group.WALLPAPER


group:android.permission-group.MESSAGES
  permission:android.permission.READ_SMS
  permission:com.google.android.providers.talk.permission.WRITE_ONLY
  permission:android.permission.RECEIVE_WAP_PUSH
  permission:com.android.email.permission.READ_ATTACHMENT
  permission:android.permission.RECEIVE_MMS
  permission:android.permission.RECEIVE_SMS
  permission:android.permission.SEND_SMS
  permission:android.permission.WRITE_SMS
  permission:android.permission.READ_CELL_BROADCASTS
  permission:com.google.android.providers.talk.permission.READ_ONLY


group:android.permission-group.USER_DICTIONARY
  permission:android.permission.READ_USER_DICTIONARY


group:com.kingroot.kinguser.permission-group.SUPERUSER


group:android.permission-group.CALENDAR


group:android.permission-group.BLUETOOTH_NETWORK
  permission:android.permission.BLUETOOTH
  permission:android.permission.BLUETOOTH_ADMIN


group:android.permission-group.BOOKMARKS
  permission:com.android.browser.permission.READ_HISTORY_BOOKMARKS
  permission:com.android.browser.permission.WRITE_HISTORY_BOOKMARKS


group:android.permission-group.CAMERA
  permission:android.permission.CAMERA


group:android.permission-group.DEVELOPMENT_TOOLS


group:android.permission-group.SCREENLOCK
  permission:android.permission.DISABLE_KEYGUARD


group:android.permission-group.WRITE_USER_DICTIONARY


group:android.permission-group.AUDIO_SETTINGS


group:android.permission-group.HARDWARE_CONTROLS


group:android.permission-group.VOICEMAIL
  permission:com.android.voicemail.permission.ADD_VOICEMAIL


group:android.permission-group.DISPLAY
  permission:android.permission.SYSTEM_ALERT_WINDOW


group:android.permission-group.APP_INFO


group:android.permission-group.SOCIAL_INFO
  permission:android.permission.READ_CALL_LOG
  permission:android.permission.WRITE_SOCIAL_STREAM
  permission:android.permission.WRITE_CONTACTS
  permission:android.permission.WRITE_CALL_LOG
  permission:android.permission.READ_SOCIAL_STREAM
  permission:android.permission.READ_CONTACTS


group:android.permission-group.AFFECTS_BATTERY
  permission:android.permission.CHANGE_WIFI_MULTICAST_STATE
  permission:com.mediatek.permission.WAKE_DEVICE_SENSORHUB


group:android.permission-group.NETWORK
  permission:android.permission.NFC
  permission:android.permission.INTERNET
  permission:android.permission.CHANGE_WIFI_STATE
  permission:android.permission.CHANGE_WIMAX_STATE


group:android.permission-group.ACCESSIBILITY_FEATURES


group:android.permission-group.STATUS_BAR


group:android.permission-group.SYNC_SETTINGS


group:android.permission-group.PERSONAL_INFO
  permission:android.permission.READ_CALENDAR
  permission:android.permission.READ_PROFILE
  permission:android.permission.WRITE_PROFILE
  permission:android.permission.WRITE_CALENDAR


group:android.permission-group.LOCATION
  permission:android.permission.ACCESS_FINE_LOCATION
  permission:android.permission.ACCESS_COARSE_LOCATION


group:android.permission-group.SYSTEM_CLOCK


group:android.permission-group.STORAGE
  permission:android.permission.WRITE_EXTERNAL_STORAGE


group:android.permission-group.SYSTEM_TOOLS
  permission:android.permission.ACCESS_MOCK_LOCATION
  permission:com.android.launcher.permission.UNINSTALL_SHORTCUT
  permission:android.permission.SUBSCRIBED_FEEDS_WRITE
  permission:android.permission.CLEAR_APP_CACHE
  permission:com.android.launcher.permission.INSTALL_SHORTCUT


group:android.permission-group.ACCOUNTS
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.sitemaps
  permission:android.permission.USE_CREDENTIALS
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.sierrasandbox
  permission:android.permission.MANAGE_ACCOUNTS
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.ah
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.cl
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.cp
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.ig
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.lh2
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.gbase
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.local
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.orkut
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.print
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.OTHER_SERVICES
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.writely
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.notebook
  permission:android.permission.AUTHENTICATE_ACCOUNTS
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.knol
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.mail
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.news
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.talk
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.wifi
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.wise
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.YouTubeUser
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.androidsecure
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.grandcentral
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.jotspot
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.adsense
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.adwords
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.youtube
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.android
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.finance
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.dodgeball
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.health
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.mobile
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.sierra
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.speech
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.blogger
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.speechpersonalization
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.groups2
  permission:com.google.android.googleapps.permission.GOOGLE_AUTH.sierraqa


group:android.permission-group.COST_MONEY


group:android.permission-group.DEVICE_ALARMS


group:android.permission-group.MICROPHONE
  permission:android.permission.RECORD_AUDIO


ungrouped:
  permission:org.simalliance.openmobileapi.SMARTCARD
  permission:com.android.permission.ENABLE_HWQRCODEDISPATCHER
  permission:com.huawei.phoneservice.permission.SMART_FAQS_ACCESS
  permission:com.android.permission.SEND_GAME_HUAWEI
  permission:com.huawei.gamebox.SEND_THIRD_COMMON_MSG
  permission:com.huawei.camera.permission.QRCODE_SCAN
  permission:com.huawei.phoneservice.permission.CENTER_SERVICE_ACCESS

第二步:没有申请就申请权限 api如下:

ActivityCompat.requestPermissions(final l Activity activity,final  String[] permissions, final  int requestCode)

第一个参数是activity

第二个参数是权限字符串数组

第三个参数是请求码 用户在用户同意授权后,如果一个界面有多个要授权,用这个在权限回调中区分

第三步:权限回调:

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)

如果用户拒绝了你的权限申请你还可以友好的提示这个权限是干什么的,

使用api:

shouldShowRequestPermissionRationale(@NonNull Activity activity,@NonNull String permission)

这是我打电话的逻辑如何在6.0系统上申请权限:

package com.simple;import android.Manifest;import android.content.Intent;import android.content.pm.PackageManager;import android.net.Uri;import android.support.annotation.NonNull;import android.support.v4.app.ActivityCompat;import android.support.v4.content.ContextCompat;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.Toast;public class MainActivity extends AppCompatActivity {    private Button btn_call_phone;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        btn_call_phone = (Button) findViewById(R.id.btn_call_phone);        btn_call_phone.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                    callPhone();            }        });    }    private void callPhone() {         if(ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED){//表示没有授权                //申请处理             ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CALL_PHONE},1000);         }else{             call();         }    }    public void call(){        Intent intent = new Intent();         intent.setAction(Intent.ACTION_CALL);         Uri data = Uri.parse("tel:" + 110);        intent.setData(data);        startActivity(intent); // 激活Activity组件    }    @Override    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {        super.onRequestPermissionsResult(requestCode, permissions, grantResults);        if(requestCode==1000){            if(grantResults[0]==PackageManager.PERMISSION_GRANTED){                Toast.makeText(this,"权限通过",Toast.LENGTH_SHORT).show();                call();            }else{//权限被拒绝                              Toast.makeText(this,"权限被用户拒绝了",Toast.LENGTH_SHORT).show();            }        }    }}
效果图:



0 0
原创粉丝点击