Ahad Murtaza
Ahad Murtaza

Reputation: 71

Access Permission Dynamically in Android Studio

I am Using google maps code in my project..i have also added permission in manifest file but there is also error in my code that say to add permission ..so i searched from net and found that add permission dynamically..so i add follwing code..

   if ( Build.VERSION.SDK_INT >= 23 &&
            ContextCompat.checkSelfPermission( context, android.Manifest.permission.ACCESS_FINE_LOCATION ) != PackageManager.PERMISSION_GRANTED &&
            ContextCompat.checkSelfPermission(context, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        return  ;
    }

so now error is cannot resolve symbol context..i am using sdk 23..please help me

Upvotes: 1

Views: 920

Answers (2)

AndiGeeky
AndiGeeky

Reputation: 11464

Please ask for permission as below :

try {
            if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                int hasReadContactPermission = checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION);
                if (hasReadContactPermission != PackageManager.PERMISSION_GRANTED) {
                    requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
                            101);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

Add below declarion also :

final private int REQUEST_CODE_ASK_PERMISSIONS = 124;

Thanks.!!

Upvotes: 1

Rohit Heera
Rohit Heera

Reputation: 2737

private void checkPermissionForGettingLocation() {

        final int fineLocationPermission = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION);
        final int coarseLocationPermission = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION);
        final int callPhonePermission = ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE);
        if (fineLocationPermission == PackageManager.PERMISSION_GRANTED && coarseLocationPermission == PackageManager.PERMISSION_GRANTED && callPhonePermission == PackageManager.PERMISSION_GRANTED) {
//            getLocationAndSaveInDatabaseOrEnableGPS();
            showGpsDialogAndGetLocation();

        } else {
            boolean requestPermissionRationale = ActivityCompat.shouldShowRequestPermissionRationale(LoginActivity.this, Manifest.permission.ACCESS_FINE_LOCATION);
            if (requestPermissionRationale) {
                Snackbar snackbar = Snackbar.make(mRootCL, "Please provide location permission for app to work correctly. ", Snackbar.LENGTH_INDEFINITE)
                        .setAction("Settings", new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                Intent intent = new Intent();
                                intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                                Uri uri = Uri.fromParts("package", LoginActivity.this.getPackageName(), null);
                                intent.setData(uri);
                                LoginActivity.this.startActivity(intent);
                            }
                        });

                snackbar.setActionTextColor(LoginActivity.this.getResources().getColor(R.color.button_green_color));

                View sbView = snackbar.getView();
                TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text);
                textView.setTextColor(LoginActivity.this.getResources().getColor(R.color.white));

                snackbar.show();
                //Toast.makeText(LoginActivity.this, "Location permission are required to get location.", Toast.LENGTH_SHORT).show();
            } else {
                ActivityCompat.requestPermissions(LoginActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION,
                        Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.CALL_PHONE}, LOCATION_PERMISSION_REQUEST_CODE);
            }
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        switch (requestCode) {
            case LOCATION_PERMISSION_REQUEST_CODE:
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//                    getLocationAndSaveInDatabaseOrEnableGPS();
                    showGpsDialogAndGetLocation();

                }
                break;
        }
    }

Upvotes: 1

Related Questions