如何在新Android M中申请权限?

时间:2016-01-08 20:00:14

标签: android

我正在尝试在我的应用中实现新的权限模型。在这里,我要求获得INTERNET许可但收到此错误我应该怎么做???

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main, container, false);

        ActivityCompat.requestPermissions(this,
                new String[]{Manifest.permission.INTERNET},
                MY_PERMISSIONS_REQUEST_INTERNET);

但Android Studio表示无法解析符号MY_PERMISSIONS_REQUEST_INTERNET 。我没有在任何地方宣布这一点,也不知道该怎么做。任何人都可以帮忙??

This is what Android Studio shows

2 个答案:

答案 0 :(得分:0)

MY_PERMISSIONS_REQUEST_INTERNET是一个应用定义的int常量(因此,您需要在应用中的某个位置定义此常量,可能在您的活动中。回调方法获取请求的结果。

要使这项工作,您还需要覆盖:

  

public void onRequestPermissionsResult(int requestCode,               字符串权限[],int [] grantResults)

在这种方法中,您将需要上面定义的常量

@Override
public void onRequestPermissionsResult(int requestCode,
        String permissions[], int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_INTERNETS: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                // permission was granted, yay! Do the
                // contacts-related task you need to do.

            } else {

                // permission denied, boo! Disable the
                // functionality that depends on this permission.
            }
            return;
        }

        // other 'case' lines to check for other
        // permissions this app might request
    }
}

答案 1 :(得分:0)

来自文件:

 * @param activity The target activity.
 * @param permissions The requested permissions.
 * @param requestCode Application specific request code to match with a result
 *    reported to {@link OnRequestPermissionsResultCallback#onRequestPermissionsResult(
 *    int, String[], int[])}.
 *

    ActivityCompat.requestPermissions(this,
            new String[]{Manifest.permission.INTERNET},
            MY_PERMISSIONS_REQUEST_INTERNET);

您是设置(MY_PERMISSIONS_REQUEST_INTERNET)值的人,比较它并在onRequestPermissionsResult(...)函数中执行特定操作。

确保实现OnRequestPermissionsResultCallback并覆盖其函数onRequestPermissionsResult(...),如果它与MY_PERMISSIONS_REQUEST_INTERNET匹配,则检查所请求的代码,如果您将请求不同的权限,并且基于授予每个权限,您将执行特定操作,这将非常有用在您的应用中,如果拒绝用户的许可,您将通知用户特定的消息。