如何重新检查权限的简历

问题描述 投票:0回答:1

我的应用程序崩溃,如果用户能够通过应用程序的位置权限,然后前往自己手机的设置和禁用权限那里。我试图通过检查通过的onResume的权限固定这一点,但似乎无法得到它的权利。在计算器上其他解决方案都没有奏效。

下面的代码我的onCreate()和检查位置的权限内运行:

if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
                mMap.setMyLocationEnabled(true);
            } else {
                //check which API users are running.
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                    //location permission dialog
                    requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSION_FINE_LOCATION);
                }
            }

我onRequestPermissionsResult():

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    switch (requestCode) {
        case MY_PERMISSION_FINE_LOCATION:
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
                    mMap.setMyLocationEnabled(true);
                }

            } else {
                Toast.makeText(getContext(), "The app requires location permissions", Toast.LENGTH_LONG).show();
                getActivity().finish();
            }
            break;
    }
}

这里是相同的片段中我的onResume()的代码:

@Override
public void onResume() {
    super.onResume();
    updatePermissions();
    if (googleApiClient.isConnected()) {
        requestLocationUpdates();
    }
}

public void updatePermissions(){
    if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
    //    mMap.setMyLocationEnabled(true);
    } else {
       //check which API users are running.
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            //location permission dialog
            requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSION_FINE_LOCATION);
        }
    }

}

应用程序崩溃,错误:java.lang.ArrayIndexOutOfBoundsException:长度= 0;索引= 0 fluo.tuki10.fragments.MapFragment.onRequestPermissionsResult(MapFragment.java:232)

这是线

           if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {

我觉得像解决方案是实现一个检查权限的更好的onResume()后用户修改他们的应用程序之外。不幸的是我的代码达不到

android android-studio android-fragments android-lifecycle onresume
1个回答
1
投票

一个忠告,它与一个头也不是没有元素比较之前:

如果(grantResults.length> 0)

© www.soinside.com 2019 - 2024. All rights reserved.