Неправильное разрешение для карты Google внутри фрагмента деятельности - PullRequest
0 голосов
/ 09 декабря 2018

Я пытаюсь поместить карту Google внутри фрагмента, и это была ошибка, когда я пытался инициализировать проверку разрешения.Вот мой

MapFragment.java

public class MapFragment extends  Fragment implements OnMapReadyCallback {
GoogleMap mGoogleMap;
MapView mMapView;
View mView;
private static final int MY_REQUEST_INT = 177;


private static final String TAG = "MapFragment";

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    mView = inflater.inflate(R.layout.fragment_map, container, false);
    mMapView = (MapView) mView.findViewById(R.id.map);
    if (mMapView != null) {
        mMapView.onCreate(null);
        mMapView.onResume();
        mMapView.getMapAsync(this);
    }
    return mView;

}


@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);


}

@Override
public void onMapReady(GoogleMap googleMap) {
    mGoogleMap = googleMap;



    /* check location's permission.*/

    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        // TODO: Consider calling
        //code for permission not granted.
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,
                    Manifest.permission.ACCESS_FINE_LOCATION}, MY_REQUEST_INT);
        }
        return;
    } else {


        //code for permission granted.
        mGoogleMap.setMyLocationEnabled(true);
        mGoogleMap.getUiSettings().setZoomControlsEnabled(true);

    }


   }
}

Ошибка:

Error

Ответы [ 2 ]

0 голосов
/ 09 декабря 2018

this получает заявку.Вам нужно использовать текущее действие - или в случае действия, которое имеет фрагмент.

ContextCompat.checkSelfPermission(getActivity(), 
    Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED 
    && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
     != PackageManager.PERMISSION_GRANTED) 
0 голосов
/ 09 декабря 2018

Вы пытаетесь передать контекст вашего фрагмента, когда метод, который вы вызываете checkSelfPermission, требует контекста вашей активности.

Попробуйте использовать getActivity ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...