Android 6 Permission access to internet

前端 未结 2 1226
甜味超标
甜味超标 2020-12-21 07:10

month ago I wrote my first app and I put permission to write on sd-card, when activity start i request permission i do:

if (permission != PackageManager.PERM         


        
2条回答
  •  伪装坚强ぢ
    2020-12-21 07:43

    You don't need to ask for internet or access_network_state permission because Android grant it by default.

    there are some dangerous permissions which we have to check

    List of Dangerous Permissions

    CALENDAR : READ_CALENDAR, WRITE_CALENDAR

    CAMERA : CAMERA

    CONTACTS : READ_CONTACTS, WRITE_CONTACTS, GET_ACCOUNTS

    LOCATION : ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION

    MICROPHONE : RECORD_AUDIO

    PHONE : READ_PHONE_STATE, CALL_PHONE, READ_CALL_LOG, WRITE_CALL_LOG, ADD_VOICEMAIL, USE_SIP, PROCESS_OUTGOING_CALLS

    SENSORS : BODY_SENSORS

    SMS : SEND_SMS, RECEIVE_SMS, READ_SMS, RECEIVE_WAP_PUSH, RECEIVE_MMS

    STORAGE : READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE

    List of Normal Permissions

    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

    For more information check this out. Normal and Dangerous Permissions

    How to Check for dangerous permissions?

    I am posting code the way i did. Let's say we what to check for CAMARA permission.

    public class Utility {
    
        public static final int MY_PERMISSIONS_REQUEST_CAMERA = 130;
    
        public static boolean checkPermissionCAMERA(final Context context) {
            int currentAPIVersion = Build.VERSION.SDK_INT;
            if (currentAPIVersion >= android.os.Build.VERSION_CODES.M) {
                if (ContextCompat.checkSelfPermission(context,
                        Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
                    if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) context,
                            Manifest.permission.CAMERA)) {
                        AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context);
                        alertBuilder.setCancelable(true);
                        alertBuilder.setTitle("Permission necessary");
                        alertBuilder.setMessage("Camera permission is necessary");
                        alertBuilder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {
                                ActivityCompat.requestPermissions((Activity) context,
                                        new String[] { Manifest.permission.CAMERA }, MY_PERMISSIONS_REQUEST_CAMERA);
                            }
                        });
                        AlertDialog alert = alertBuilder.create();
                        alert.show();
    
                    } else {
                        ActivityCompat.requestPermissions((Activity) context, new String[] { Manifest.permission.CAMERA },
                                MY_PERMISSIONS_REQUEST_CAMERA);
                    }
                    return false;
                } else {
                    return true;
                }
            } else {
                return true;
            }
        }
    
        public static void showDialogOK(final Activity context, String message) {
            AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context);
            alertBuilder.setCancelable(true);
            alertBuilder.setTitle("Permission necessary");
            alertBuilder.setMessage(message);
            alertBuilder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    Utility.checkAndRequestPermissions(context);
                }
            });
            AlertDialog alert = alertBuilder.create();
            alert.show();
        }
    }
    

    Now inside your Activity.

    if(Utility.checkPermissionCAMERA(this)){
        // Do work
    }
    

    and finally override onRequestPermissionsResult

    @Override
    public void onRequestPermissionsResult(int requestCode,
            String[] permissions, int[] grantResults) {
        switch (requestCode) {
        case Utility.MY_PERMISSIONS_REQUEST_CAMERA:
            if (ContextCompat.checkSelfPermission(Splash_Activity.this,
                    Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
                // do work
            }else{
                // take action
            } 
            break;
        }
    }
    

    EDIT:

    How to Check for multiple permissions?

    public class Utility {
    
        public static final int REQUEST_ID_MULTIPLE_PERMISSIONS = 101;
    
        public static boolean checkAndRequestPermissions(final Activity context) {
            int ExtstorePermission = ContextCompat.checkSelfPermission(context,
                    Manifest.permission.READ_EXTERNAL_STORAGE);
            int WExtstorePermission = ContextCompat.checkSelfPermission(context,
                    Manifest.permission.WRITE_EXTERNAL_STORAGE);
            int cameraPermission = ContextCompat.checkSelfPermission(context,
                    Manifest.permission.CAMERA);
            int READ_PHONE_STATE = ContextCompat.checkSelfPermission(context,
                    Manifest.permission.READ_PHONE_STATE);
            int location = ContextCompat.checkSelfPermission(context,
                    Manifest.permission.ACCESS_FINE_LOCATION);
            int READ_CONTACTS = ContextCompat.checkSelfPermission(context,
                    Manifest.permission.READ_CONTACTS);
            int RECORD_AUDIO = ContextCompat.checkSelfPermission(context,
                    Manifest.permission.RECORD_AUDIO);
            int internet = ContextCompat.checkSelfPermission(context,
                    Manifest.permission.INTERNET);
            List listPermissionsNeeded = new ArrayList<>();
            if (cameraPermission != PackageManager.PERMISSION_GRANTED) {
                listPermissionsNeeded.add(Manifest.permission.CAMERA);
            }
            if (WExtstorePermission != PackageManager.PERMISSION_GRANTED) {
                listPermissionsNeeded
                        .add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
            }
            if (ExtstorePermission != PackageManager.PERMISSION_GRANTED) {
                listPermissionsNeeded
                        .add(Manifest.permission.READ_EXTERNAL_STORAGE);
            }
            if (location != PackageManager.PERMISSION_GRANTED) {
                listPermissionsNeeded.add(Manifest.permission.ACCESS_FINE_LOCATION);
            }
            if (READ_PHONE_STATE != PackageManager.PERMISSION_GRANTED) {
                listPermissionsNeeded.add(Manifest.permission.READ_PHONE_STATE);
            }
            if (READ_CONTACTS != PackageManager.PERMISSION_GRANTED) {
                listPermissionsNeeded.add(Manifest.permission.READ_CONTACTS);
            }
            if (RECORD_AUDIO != PackageManager.PERMISSION_GRANTED) {
                listPermissionsNeeded.add(Manifest.permission.RECORD_AUDIO);
            }
            if (internet != PackageManager.PERMISSION_GRANTED) {
                listPermissionsNeeded.add(Manifest.permission.INTERNET);
            }
            if (!listPermissionsNeeded.isEmpty()) {
                ActivityCompat.requestPermissions(context, listPermissionsNeeded
                        .toArray(new String[listPermissionsNeeded.size()]),
                        REQUEST_ID_MULTIPLE_PERMISSIONS);
                return false;
            }
            return true;
        }
    
        public static void showDialogOK(final Activity context, String message) {
            AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context);
            alertBuilder.setCancelable(true);
            alertBuilder.setTitle("Permission necessary");
            alertBuilder.setMessage(message);
            alertBuilder.setPositiveButton(android.R.string.yes,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            Utility.checkAndRequestPermissions(context);
                        }
                    });
            AlertDialog alert = alertBuilder.create();
            alert.show();
        }
    }
    

    I hope this will help

提交回复
热议问题