谷歌地图摄像头在棉花糖android中的位置不变

谷歌地图摄像头在棉花糖android中的位置不变,android,dictionary,gps,Android,Dictionary,Gps,我有一个android的出租车预订应用程序,我创建了一个类似uber的应用程序。 它在印度的所有版本上都能正常工作,但在英国不起作用,谷歌地图和地理编码服务也不能在6.0.1上工作。安卓棉花糖 我有密码 public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, OnMapReadyCallback, GoogleA

我有一个android的出租车预订应用程序,我创建了一个类似uber的应用程序。 它在印度的所有版本上都能正常工作,但在英国不起作用,谷歌地图和地理编码服务也不能在6.0.1上工作。安卓棉花糖

我有密码

     public class MainActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener, OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, com.google.android.gms.location.LocationListener {

LinearLayout btnview, destview;
private static final int REQUEST_CODE_AUTOCOMPLETE = 1;
int PLACE_AUTOCOMPLETE_REQUEST_CODE = 200;
public static final int MY_PERMISSIONS_REQUEST_LOCATION = 99;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    navigationView = (NavigationView) findViewById(R.id.nav_view);

    navigationView.setNavigationItemSelectedListener(this);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    userSession = new UserSession(this);
    userdetails = userSession.getUserDetails();
    username = userdetails.get(UserSession.KEY_USERNAME);
    userdefaultaddr = userdetails.get(UserSession.KEY_ADDR);
    View v = navigationView.getHeaderView(0);
    TextView textView = (TextView) v.findViewById(R.id.textView1);
    textView.setText(username);

    mContext = this;
    // Obtain the SupportMapFragment and get notified when the map is ready to be used.
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    btnview = (LinearLayout) findViewById(R.id.locationbutton);
    destview = (LinearLayout) findViewById(R.id.destination_view);
    btnsearch = (Button) findViewById(R.id.searchcab_button);
    mdestinationaddr = (TextView) findViewById(R.id.desti_txt);
    mLocationMarkerText = (TextView) findViewById(R.id.locationMarkertext);
    mLocationText = (TextView) findViewById(R.id.Locality);
    mLocationText.setText("" + userdefaultaddr);
    mLocationText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            openAutocompleteActivity();
        }
    });
    mdestinationaddr.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            try {
                Intent intent =
                        new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_FULLSCREEN)
                                .build(MainActivity.this);
                startActivityForResult(intent, PLACE_AUTOCOMPLETE_REQUEST_CODE);
            } catch (GooglePlayServicesRepairableException e) {
                // TODO: Handle the error.
            } catch (GooglePlayServicesNotAvailableException e) {
                // TODO: Handle the error.
            }
        }
    });
    mLocationMarkerText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            btnview.setVisibility(View.VISIBLE);
            destview.setVisibility(View.VISIBLE);
            mLocationMarkerText.setText("SET DESTINATION LOCATION");
        }
    });
    btnsearch.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            fromloc = mLocationText.getText().toString();
            toloc = mdestinationaddr.getText().toString();
            // traveldate=datepick_btn.getText().toString();
            //traveltime=timepick_btn.getText().toString();

            Calendar c = Calendar.getInstance();
            c.add(Calendar.MINUTE, 1);
            SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd");
            SimpleDateFormat df2 = new SimpleDateFormat("hh:mm");
            traveldate = df1.format(c.getTime());
            traveltime = df2.format(c.getTime());

            if (fromloc != null && toloc != null) {
                Intent intent = new Intent(MainActivity.this, SearchActivity.class);
                //  intent.putExtra("listdata", cablistdata);
                intent.putExtra("s", fromloc);
                intent.putExtra("d", toloc);
                intent.putExtra("dt", traveldate);
                intent.putExtra("tm", traveltime);
                startActivity(intent);
                // searchCabs(fromloc, toloc, traveldate, traveltime);
            } else {
                Toast.makeText(MainActivity.this, "Please Enter Source and Destination", Toast.LENGTH_LONG).show();
            }
        }
    });
    mapFragment.getMapAsync(this);
    mResultReceiver = new AddressResultReceiver(new Handler());
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        checkLocationPermission();
        buildGoogleApiClient();
    }
    if (checkPlayServices()) {

        if (!AppUtils.isLocationEnabled(mContext)) {
            // notify user
            AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
            dialog.setMessage("Location not enabled!");
            dialog.setPositiveButton("Open location settings", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface paramDialogInterface, int paramInt) {
                    Intent myIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                    startActivity(myIntent);
                }
            });
            dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface paramDialogInterface, int paramInt) {
                    // TODO Auto-generated method stub

                }
            });
            dialog.show();
        }
        buildGoogleApiClient();
    } else {
        Toast.makeText(mContext, "Location not supported in this device", Toast.LENGTH_SHORT).show();
    }

    Intent background = new Intent(this, BackgroundService.class);
    PendingIntent pintent = PendingIntent.getService(this, 0, background, 0);
    AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    alarm.setRepeating(AlarmManager.RTC_WAKEUP, SystemClock.currentThreadTimeMillis(), 30 * 1000, pintent);
}

@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
    // Handle navigation view item clicks here.
    int id = item.getItemId();

    if (id == R.id.nav_home) {
        Intent intent = new Intent(MainActivity.this, MainActivity.class);
        startActivity(intent);
    } else if (id == R.id.nav_history) {

        Intent intent = new Intent(MainActivity.this, BookHistoryActivity.class);
        startActivity(intent);

    } else if (id == R.id.nav_settings) {

        Intent intent = new Intent(MainActivity.this, GeneralActivity.class);
        intent.putExtra("from", "settings");
        startActivity(intent);

    } else if (id == R.id.nav_notification) {

        Intent intent = new Intent(MainActivity.this, GeneralActivity.class);
        intent.putExtra("from", "notific");
        startActivity(intent);

    } else if (id == R.id.nav_payment) {

        Intent intent = new Intent(MainActivity.this, GeneralActivity.class);
        intent.putExtra("from", "payment");
        startActivity(intent);

    } else if (id == R.id.nav_promotions) {

        Intent intent = new Intent(MainActivity.this, GeneralActivity.class);
        intent.putExtra("from", "promo");
        startActivity(intent);

    } else if (id == R.id.nav_about) {

        Intent intent = new Intent(MainActivity.this, GeneralActivity.class);
        intent.putExtra("from", "about");
        startActivity(intent);

    } else if (id == R.id.nav_help) {

        Intent intent = new Intent(MainActivity.this, GeneralActivity.class);
        intent.putExtra("from", "help");
        startActivity(intent);

    } else if (id == R.id.nav_logout) {
        userSession.logoutUser();
        Intent intent = new Intent(MainActivity.this, BaseActivity.class);
        startActivity(intent);
        finish();
    }

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
}

@Override
public void onMapReady(GoogleMap googleMap) {
    Log.d(TAG, "OnMapReady");
    mMap = googleMap;

    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (ContextCompat.checkSelfPermission(this,
                Manifest.permission.ACCESS_FINE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {

            mMap.setMyLocationEnabled(true);


            mMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
                @Override
                public void onCameraChange(CameraPosition cameraPosition) {
                    Log.d("Camera postion change" + "", cameraPosition + "");
                    mCenterLatLong = cameraPosition.target;

                    mMap.clear();

                    try {

                        Location mLocation = new Location("");
                        mLocation.setLatitude(mCenterLatLong.latitude);
                        mLocation.setLongitude(mCenterLatLong.longitude);

                        startIntentService(mLocation);
                        // mLocationMarkerText.setText("Lat : " + mCenterLatLong.latitude + "," + "Long : " + mCenterLatLong.longitude);

                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    } else {

        mMap.setMyLocationEnabled(true);
    }
    mMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
        @Override
        public void onCameraChange(CameraPosition cameraPosition) {
            Log.d("Camera postion change" + "", cameraPosition + "");
            mCenterLatLong = cameraPosition.target;

            mMap.clear();

            try {

                Location mLocation = new Location("");
                mLocation.setLatitude(mCenterLatLong.latitude);
                mLocation.setLongitude(mCenterLatLong.longitude);

                startIntentService(mLocation);
                // mLocationMarkerText.setText("Lat : " + mCenterLatLong.latitude + "," + "Long : " + mCenterLatLong.longitude);

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });

    //   mMap.setMyLocationEnabled(true);
   // mMap.getUiSettings().setMyLocationButtonEnabled(true);
}

@Override
public void onConnected(Bundle bundle) {

    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (ContextCompat.checkSelfPermission(this,
                Manifest.permission.ACCESS_FINE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {

            mMap.setMyLocationEnabled(true);

            Location mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
                    mGoogleApiClient);
            Log.d("inmarshlastloc", "" + mLastLocation.getLatitude() + "/" + mLastLocation.getLongitude());
            if (mLastLocation != null) {
                changeMap(mLastLocation);
                Log.d(TAG, "ON connected");

            } else
                try {
                    LocationServices.FusedLocationApi.removeLocationUpdates(
                            mGoogleApiClient, this);

                } catch (Exception e) {
                    e.printStackTrace();
                }
            try {
                LocationRequest mLocationRequest = new LocationRequest();
                mLocationRequest.setInterval(10000);
                mLocationRequest.setFastestInterval(5000);
                mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
                LocationServices.FusedLocationApi.requestLocationUpdates(
                        mGoogleApiClient, mLocationRequest, this);

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    } else {
        mMap.setMyLocationEnabled(true);
    }

    Location mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
            mGoogleApiClient);

    if (mLastLocation != null) {
        changeMap(mLastLocation);
        Log.d(TAG, "ON connected");

    } else
        try {
            LocationServices.FusedLocationApi.removeLocationUpdates(
                    mGoogleApiClient, this);

        } catch (Exception e) {
            e.printStackTrace();
        }
    try {
        LocationRequest mLocationRequest = new LocationRequest();
        mLocationRequest.setInterval(10000);
        mLocationRequest.setFastestInterval(5000);
        mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
        LocationServices.FusedLocationApi.requestLocationUpdates(
                mGoogleApiClient, mLocationRequest, this);

    } catch (Exception e) {
        e.printStackTrace();
    }
}

@Override
public void onConnectionSuspended(int i) {
    Log.i(TAG, "Connection suspended");

    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (ContextCompat.checkSelfPermission(this,
                Manifest.permission.ACCESS_FINE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {

            mGoogleApiClient.connect();
            return;
        }
        return;
    } else {

        mGoogleApiClient.connect();
    }
}

@Override
public void onLocationChanged(Location location) {
    try {
        if (location != null)
            Log.d("inmarsh", "" + location.getLatitude() + "/" + location.getLongitude());
        changeMap(location);
        LocationServices.FusedLocationApi.removeLocationUpdates(
                mGoogleApiClient, this);

    } catch (Exception e) {
        e.printStackTrace();
    }
}

@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
}

protected synchronized void buildGoogleApiClient() {
    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(LocationServices.API)
            .build();
}

@Override
protected void onStart() {
    super.onStart();
    try {
        mGoogleApiClient.connect();

    } catch (Exception e) {
        e.printStackTrace();
    }
}

@Override
protected void onStop() {
    super.onStop();
    try {

    } catch (RuntimeException e) {
        e.printStackTrace();
    }
    if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
        mGoogleApiClient.disconnect();
    }
}

private boolean checkPlayServices() {
    int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
    if (resultCode != ConnectionResult.SUCCESS) {
        if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
            GooglePlayServicesUtil.getErrorDialog(resultCode, this,
                    PLAY_SERVICES_RESOLUTION_REQUEST).show();
        } else {
            //finish();
        }
        return false;
    }
    return true;
}

private void changeMap(Location location) {

    Log.d(TAG, "Reaching map" + mMap);

    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (ContextCompat.checkSelfPermission(this,
                Manifest.permission.ACCESS_FINE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {

            mMap.setMyLocationEnabled(true);

            if (mMap != null) {
                mMap.getUiSettings().setZoomControlsEnabled(false);
                LatLng latLong;

                Log.d("inmarshchangemap", "" + location.getLatitude() + "/" + location.getLongitude());
                latLong = new LatLng(location.getLatitude(), location.getLongitude());

                CameraPosition cameraPosition = new CameraPosition.Builder()
                        .target(latLong).zoom(19f).build();

                //  mMap.setMyLocationEnabled(true);
                mMap.getUiSettings().setMyLocationButtonEnabled(true);
                mMap.animateCamera(CameraUpdateFactory
                        .newCameraPosition(cameraPosition));

                // mLocationMarkerText.setText("Lat : " + location.getLatitude() + "," + "Long : " + location.getLongitude());
                startIntentService(location);

            } else {
                Toast.makeText(getApplicationContext(),
                        "Sorry! unable to create maps", Toast.LENGTH_SHORT)
                        .show();
            }
        }
    } else {

        mMap.setMyLocationEnabled(true);
    }
    // check if map is created successfully or not
    if (mMap != null) {
        mMap.getUiSettings().setZoomControlsEnabled(false);
        LatLng latLong;

        latLong = new LatLng(location.getLatitude(), location.getLongitude());

        CameraPosition cameraPosition = new CameraPosition.Builder()
                .target(latLong).zoom(19f).build();

        //  mMap.setMyLocationEnabled(true);
        mMap.getUiSettings().setMyLocationButtonEnabled(true);
        mMap.animateCamera(CameraUpdateFactory
                .newCameraPosition(cameraPosition));

        // mLocationMarkerText.setText("Lat : " + location.getLatitude() + "," + "Long : " + location.getLongitude());
        startIntentService(location);

    } else {
        Toast.makeText(getApplicationContext(),
                "Sorry! unable to create maps", Toast.LENGTH_SHORT)
                .show();
    }
}

@SuppressLint("ParcelCreator")
class AddressResultReceiver extends ResultReceiver {
    public AddressResultReceiver(Handler handler) {
        super(handler);
    }

    /**
     * Receives data sent from FetchAddressIntentService and updates the UI in MainActivity.
     */
    @Override
    protected void onReceiveResult(int resultCode, Bundle resultData) {

        // Display the address string or an error message sent from the intent service.
        mAddressOutput = resultData.getString(AppUtils.LocationConstants.RESULT_DATA_KEY);

        mAreaOutput = resultData.getString(AppUtils.LocationConstants.LOCATION_DATA_AREA);

        mCityOutput = resultData.getString(AppUtils.LocationConstants.LOCATION_DATA_CITY);
        mStateOutput = resultData.getString(AppUtils.LocationConstants.LOCATION_DATA_STREET);

        displayAddressOutput();

        // Show a toast message if an address was found.
        if (resultCode == AppUtils.LocationConstants.SUCCESS_RESULT) {
            //  showToast(getString(R.string.address_found));
        }
    }
}

/**
 * Updates the address in the UI.
 */
protected void displayAddressOutput() {
    //  mLocationAddressTextView.setText(mAddressOutput);
    try {
        if (mAreaOutput != null)
            // mLocationText.setText(mAreaOutput+ "");

            mLocationText.setText(mAddressOutput);
        //  mLocationText.setText(mAreaOutput);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

/**
 * Creates an intent, adds location data to it as an extra, and starts the intent service for
 * fetching an address.
 */
protected void startIntentService(Location mLocation) {
    // Create an intent for passing to the intent service responsible for fetching the address.
    Intent intent = new Intent(this, FetchAddressIntentService.class);

    // Pass the result receiver as an extra to the service.
    intent.putExtra(AppUtils.LocationConstants.RECEIVER, mResultReceiver);

    // Pass the location data as an extra to the service.
    intent.putExtra(AppUtils.LocationConstants.LOCATION_DATA_EXTRA, mLocation);

    // Start the service. If the service isn't already running, it is instantiated and started
    // (creating a process for it if needed); if it is running then it remains running. The
    // service kills itself automatically once all intents are processed.
    startService(intent);
}

private void openAutocompleteActivity() {
    try {
        // The autocomplete activity requires Google Play Services to be available. The intent
        // builder checks this and throws an exception if it is not the case.
        Intent intent = new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_FULLSCREEN)
                .build(this);
        startActivityForResult(intent, REQUEST_CODE_AUTOCOMPLETE);
    } catch (GooglePlayServicesRepairableException e) {
        // Indicates that Google Play Services is either not installed or not up to date. Prompt
        // the user to correct the issue.
        GoogleApiAvailability.getInstance().getErrorDialog(this, e.getConnectionStatusCode(),
                0 /* requestCode */).show();
    } catch (GooglePlayServicesNotAvailableException e) {
        // Indicates that Google Play Services is not available and the problem is not easily
        // resolvable.
        String message = "Google Play Services is not available: " +
                GoogleApiAvailability.getInstance().getErrorString(e.errorCode);

        Toast.makeText(mContext, message, Toast.LENGTH_SHORT).show();
    }
}

/**
 * Called after the autocomplete activity has finished to return its result.
 */
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    // Check that the result was from the autocomplete widget.
    if (requestCode == REQUEST_CODE_AUTOCOMPLETE) {
        if (resultCode == RESULT_OK) {
            // Get the user's selected place from the Intent.
            Place place = PlaceAutocomplete.getPlace(mContext, data);

            // TODO call location based filter

            LatLng latLong;

            latLong = place.getLatLng();
            mLocationText.setText(place.getName() + "");

           /* if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                // TODO: Consider calling
                //    ActivityCompat#requestPermissions
                // here to request the missing permissions, and then overriding
                //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                //                                          int[] grantResults)
                // to handle the case where the user grants the permission. See the documentation
                // for ActivityCompat#requestPermissions for more details.
                return;
            }*/
            if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                if (ContextCompat.checkSelfPermission(this,
                        Manifest.permission.ACCESS_FINE_LOCATION)
                        == PackageManager.PERMISSION_GRANTED) {

                    mMap.setMyLocationEnabled(true);
                    CameraPosition cameraPosition = new CameraPosition.Builder()
                            .target(latLong).zoom(19f).build();

                    // mMap.setMyLocationEnabled(true);
                    mMap.animateCamera(CameraUpdateFactory
                            .newCameraPosition(cameraPosition));
                }
            } else {

                mMap.setMyLocationEnabled(true);
            }
            CameraPosition cameraPosition = new CameraPosition.Builder()
                    .target(latLong).zoom(19f).build();

            // mMap.setMyLocationEnabled(true);
            mMap.animateCamera(CameraUpdateFactory
                    .newCameraPosition(cameraPosition));
        }
    }     
}

public boolean checkLocationPermission() {
    if (ContextCompat.checkSelfPermission(this,
            Manifest.permission.ACCESS_FINE_LOCATION)
            != PackageManager.PERMISSION_GRANTED) {

        if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                Manifest.permission.ACCESS_FINE_LOCATION)) {
规划,请重试请求许可

            //Prompt the user once explanation has been shown
            //(just doing it here for now, note that with this code, no explanation is shown)
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                    MY_PERMISSIONS_REQUEST_LOCATION);

        } else {

            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                    MY_PERMISSIONS_REQUEST_LOCATION);
        }
        return false;
    } else {
        return true;
    }
}
@Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_LOCATION: {
                          if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                if (ContextCompat.checkSelfPermission(this,
                        Manifest.permission.ACCESS_FINE_LOCATION)
                        == PackageManager.PERMISSION_GRANTED) {
                    mMap.setMyLocationEnabled(true);
                }

            } else {                  
                Toast.makeText(this, "permission denied", Toast.LENGTH_LONG).show();
            }
            return;
        }          
    }
}
  }         
请帮我做这个
谢谢你

成功解决了这个问题。我也担心这个问题,因为我的应用程序正在开发lolipop和下面的牛轧糖,而不是marshamallow,所以我用这种方式解决了这个问题

我已经解决了这个问题,只是在获得许可后才开始这个活动,并从onmapready功能中删除

1.您正在运行时检查OnMaReady函数中位置权限的权限从该函数中删除,并在此活动之前调用。希望它将工作,否则评论如下

2.删除位置管理器、方法及其权限和removecallbackmethods。然后它会工作。在连接的融合api上。然后它会完美地工作

就这样在mapredy上评论一下权限吧

在mapenabledtrue上按alt_uu回车键时添加super lint选项

 @SuppressLint("MissingPermission")
@Override
public void onMapReady(GoogleMap googleMap)
{
    mGoogleMap=googleMap;
    mGoogleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
    buildGoogleApiClient();
    mGoogleMap.setMyLocationEnabled(true);

    //Initialize Google Play Services
   /* if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (ContextCompat.checkSelfPermission(this,
                Manifest.permission.ACCESS_FINE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {
            //Location Permission already granted
            buildGoogleApiClient();
            mGoogleMap.setMyLocationEnabled(true);
        } else {
            //Request Location Permission
            checkLocationPermission();
        }
    }
    else {
        buildGoogleApiClient();
        mGoogleMap.setMyLocationEnabled(true);
    }*/
}

成功解决。我也担心这个问题,因为我的应用程序正在开发lolipop和下面的牛轧糖,而不是marshamallow,所以我用这种方式解决了这个问题

我已经解决了这个问题,只是在获得许可后才开始这个活动,并从onmapready功能中删除

1.您正在运行时检查OnMaReady函数中位置权限的权限从该函数中删除,并在此活动之前调用。希望它将工作,否则评论如下

2.删除位置管理器、方法及其权限和removecallbackmethods。然后它会工作。在连接的融合api上。然后它会完美地工作

就这样在mapredy上评论一下权限吧

在mapenabledtrue上按alt_uu回车键时添加super lint选项

 @SuppressLint("MissingPermission")
@Override
public void onMapReady(GoogleMap googleMap)
{
    mGoogleMap=googleMap;
    mGoogleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
    buildGoogleApiClient();
    mGoogleMap.setMyLocationEnabled(true);

    //Initialize Google Play Services
   /* if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (ContextCompat.checkSelfPermission(this,
                Manifest.permission.ACCESS_FINE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {
            //Location Permission already granted
            buildGoogleApiClient();
            mGoogleMap.setMyLocationEnabled(true);
        } else {
            //Request Location Permission
            checkLocationPermission();
        }
    }
    else {
        buildGoogleApiClient();
        mGoogleMap.setMyLocationEnabled(true);
    }*/
}