1

This is My Code

@Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        switch (requestCode) {
            case 1: {
                // If request is cancelled, the result arrays are empty.
                TrackGPS gps = new TrackGPS(this, DashboardActivity.this);
                if (grantResults.length > 0
                        && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//                    if (ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.ACCESS_FINE_LOCATION)){
//
//                        Toast.makeText(this,"GPS permission allows us to access location data. Please allow in App Settings for additional functionality.",Toast.LENGTH_LONG).show();
//
//                    }

                    if (gps.canGetLocation()) {
                        double latitude = gps.getLatitude();
                        double logitude = gps.getLongitude();
                        System.out.println("latitude=" + latitude);
                        System.out.println("logitude=" + logitude);
                        city = getCity(latitude, logitude);

                        tvCity.setText(city);

                    }
                }
            }
        }

    }
}

Permission related problem for tracking location via GPS.How to request for permission when using a higher version devices like Marshmallow.

Aastha Doshi
  • 147
  • 1
  • 14

2 Answers2

2

You Can give any manifest permission as of now here Read and write external storage permission is given

public static final int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 123;
        @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
        public static boolean checkPermission(final Context context)
        {
            int currentAPIVersion = Build.VERSION.SDK_INT;
            if(currentAPIVersion>=android.os.Build.VERSION_CODES.M)
            {
                if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
                    if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) context, Manifest.permission.READ_EXTERNAL_STORAGE)) {
                        AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context);
                        alertBuilder.setCancelable(true);
                        alertBuilder.setTitle("Permission necessary");
                        alertBuilder.setMessage("External storage permission is necessary");
                        alertBuilder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                            @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
                            public void onClick(DialogInterface dialog, int which) {
                                ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
                            }
                        });
                        AlertDialog alert = alertBuilder.create();
                        alert.show();
                    } else {
                        ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
                    }
                    return false;
                } else {
                    return true;
                }
            } else {
                return true;
            }
Aastha Doshi
  • 147
  • 1
  • 14
0
writed code in main activity
  public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    switch (requestCode) {
        case 1: {
 TrackGPS gps = new TrackGPS(getApplicationContext(), DashboardActivity.this);
  if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if (gps.canGetLocation()) {
                    double latitude = gps.getLatitude();
                    double logitude = gps.getLongitude();
                    System.out.println("latitude=" + latitude);
                    System.out.println("logitude=" + logitude);
                    city = getCity(latitude, logitude);

                    tvCity.setText(city);

                }
            }
}
}
//this marshmallow permission call in oncreate method
 private void marshmallowGPSPremissionCheck() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
            && this.checkSelfPermission(
            Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED
            && this.checkSelfPermission(
            Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        requestPermissions(
                new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,
                        Manifest.permission.ACCESS_FINE_LOCATION},
                MY_PERMISSION_LOCATION);
    } else {
        //   gps functions.

    }
}