Android 6许可访问互联网 [英] Android 6 Permission access to internet

查看:87
本文介绍了Android 6许可访问互联网的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

一个月前,我写了我的第一个应用程序,我放了写SD卡的权限,当活动开始时,我请求权限:

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.PERMISSION_GRANTED) {

    if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("L'app richiede i permessi di scrittura")
                .setTitle("Richiesta Permessi");

        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int id) {

                makeRequest();
            }
        });

        AlertDialog dialog = builder.create();
        dialog.show();

    } else {
        makeRequest();
    }
}

这是makeRequest()

private static final int REQUEST_WRITE_STORAGE = 112;
private static String TAG = "PermissionDemo";

protected void makeRequest() {
    ActivityCompat.requestPermissions(this,
            new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
            REQUEST_WRITE_STORAGE);
}

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    switch (requestCode) {
        case REQUEST_WRITE_STORAGE: {
            if (grantResults.length == 0
                    || grantResults[0] !=
                    PackageManager.PERMISSION_GRANTED) {

               //Log.i(TAG, "Permission has been denied by user");

                finish();
            } else {
                //Log.i(TAG, "Permission has been granted by user");
                creaConfigurazioneIniziale();
            }
            return;
        }
    }
}

现在我的应用需要互联网许可,我已将其放在清单中:

Now my app have need permission for internet i have put this on manifest:

<uses-permission android:name="android.permission.INTERNET" />

和这个

但是不起作用,我该怎么做才能添加Internet和网络权限? 我尝试添加makereqeust这个:

but don't work, what i can do to add permission for Internet and network? I have try to add makereqeust this:

protected void makeRequest() {
    ActivityCompat.requestPermissions(this,
            new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
            REQUEST_WRITE_STORAGE);
    ActivityCompat.requestPermissions(this,
            new String[]{Manifest.permission.INTERNET},
            REQUEST_WRITE_STORAGE);
    ActivityCompat.requestPermissions(this,
            new String[]{Manifest.permission.ACCESS_NETWORK_STATE},
            REQUEST_WRITE_STORAGE);
}

但不起作用.我该如何解决问题?

but don't work. How i can do to solve problem?

推荐答案

您不需要请求Internet或access_network_state权限,因为Android默认情况下会授予它.

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

日历: READ_CALENDAR,WRITE_CALENDAR

CALENDAR : READ_CALENDAR, WRITE_CALENDAR

相机:相机

联系人: READ_CONTACTS,WRITE_CONTACTS,GET_ACCOUNTS

CONTACTS : READ_CONTACTS, WRITE_CONTACTS, GET_ACCOUNTS

位置::ACCESS_FINE_LOCATION,ACCESS_COARSE_LOCATION

LOCATION : ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION

麦克风: RECORD_AUDIO

MICROPHONE : RECORD_AUDIO

电话::READ_PHONE_STATE,CALL_PHONE,READ_CALL_LOG,WRITE_CALL_LOG,ADD_VOICEMAIL,USE_SIP,PROCESS_OUTGOING_CALLS

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

传感器: BODY_SENSORS

SENSORS : BODY_SENSORS

短信::SEND_SMS,RECEIVE_SMS,READ_SMS,RECEIVE_WAP_PUSH,RECEIVE_MMS

SMS : SEND_SMS, RECEIVE_SMS, READ_SMS, RECEIVE_WAP_PUSH, RECEIVE_MMS

存储: READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE

STORAGE : READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE

普通权限列表

ACCESS_LOCATION_EXTRA_COMMANDS

ACCESS_LOCATION_EXTRA_COMMANDS

ACCESS_NETWORK_STATE

ACCESS_NETWORK_STATE

ACCESS_NOTIFICATION_POLICY

ACCESS_NOTIFICATION_POLICY

ACCESS_WIFI_STATE

ACCESS_WIFI_STATE

蓝牙

BLUETOOTH_ADMIN

BLUETOOTH_ADMIN

BROADCAST_STICKY

BROADCAST_STICKY

CHANGE_NETWORK_STATE

CHANGE_NETWORK_STATE

CHANGE_WIFI_MULTICAST_STATE

CHANGE_WIFI_MULTICAST_STATE

CHANGE_WIFI_STATE

CHANGE_WIFI_STATE

DISABLE_KEYGUARD

DISABLE_KEYGUARD

EXPAND_STATUS_BAR

EXPAND_STATUS_BAR

闪光灯

GET_PACKAGE_SIZE

GET_PACKAGE_SIZE

互联网

KILL_BACKGROUND_PROCESSES

KILL_BACKGROUND_PROCESSES

MODIFY_AUDIO_SETTINGS

MODIFY_AUDIO_SETTINGS

NFC

READ_SYNC_SETTINGS

READ_SYNC_SETTINGS

READ_SYNC_STATS

READ_SYNC_STATS

RECEIVE_BOOT_COMPLETED

RECEIVE_BOOT_COMPLETED

REORDER_TASKS

REORDER_TASKS

REQUEST_INSTALL_PACKAGES

REQUEST_INSTALL_PACKAGES

SET_TIME_ZONE

SET_TIME_ZONE

SET_WALLPAPER

SET_WALLPAPER

SET_WALLPAPER_HINTS

SET_WALLPAPER_HINTS

TRANSMIT_IR

TRANSMIT_IR

USE_FINGERPRINT

USE_FINGERPRINT

振动

WAKE_LOCK

WAKE_LOCK

WRITE_SYNC_SETTINGS

WRITE_SYNC_SETTINGS

SET_ALARM

SET_ALARM

INSTALL_SHORTCUT

INSTALL_SHORTCUT

UNINSTALL_SHORTCUT

UNINSTALL_SHORTCUT

有关更多信息,请查看此内容. 正常和危险权限

For more information check this out. Normal and Dangerous Permissions

我正在按照自己的方式发布代码.假设我们要检查CAMARA权限.

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();
    }
}

现在进入活动".

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

并最终覆盖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;
    }
}

如何检查多个权限?

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<String> 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();
    }
}

我希望这会有所帮助

这篇关于Android 6许可访问互联网的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆