-5

Need to check for the grant of the required permissions(specifically to read user device sms)by the android application user as per android 6 and above standards. I am specifically looking for the ContextCompat.checkSelfPermission() method described on android developer site. See here: link

sudoCoder
  • 115
  • 2
  • 13
  • Possible duplicate of [How to request Location Permission on Android 6](https://stackoverflow.com/questions/40142331/how-to-request-location-permission-on-android-6) – Abdul Waheed Jul 03 '17 at 07:45

3 Answers3

1

Please follow this tutorials Here is complete source code

static final int PERMISSION_ALL = 1;
    String[] PERMISSIONS =
            {Manifest.permission.ACCESS_COARSE_LOCATION,
                    Manifest.permission.ACCESS_FINE_LOCATION};

     protected void runtimePermission() {
        if (!hasPermission(ContactUS.this, PERMISSIONS)) {
            ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
        }
    }

    public static boolean hasPermission(Context context, String... permissions) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) {
            for (String permission : permissions) {
                if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
                    return false;
                }

            }
        }
        return true;
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case PERMISSION_ALL:
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    //permission granted
                    //your logic here
                } else {
                    //permission denied
                }
                break;

        }
    }
Akp
  • 259
  • 1
  • 9
1

you can add run time permission like this follow this steps

step 1 :- first add this permission in manifiest file

android.Manifest.permission.ACCESS_FINE_LOCATION,
android.Manifest.permission.ACCESS_COARSE_LOCATION,

now, than

step 2 : ask runtime permission

String permission = android.Manifest.permission.ACCESS_FINE_LOCATION;
        if (ActivityCompat.checkSelfPermission(SearchCityClass.this, permission)
                != PackageManager.PERMISSION_GRANTED && ActivityCompat.
                checkSelfPermission(SearchCityClass.this, android.Manifest.permission.ACCESS_COARSE_LOCATION)
                != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(SearchCityClass.this, new String[]
                    {permission}, PERMISSION_GPS_CODE);

        }

step 3: finallly handle permsiion result in onRequestPermissionsResult

 @Override
 public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                   @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == PERMISSION_GPS_CODE) {
    if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {


        Toast.makeText(this, location_permission_granted_msg, Toast.LENGTH_SHORT).show();

    } else {

        Toast.makeText(this, location_permission_not_granted_msg, Toast.LENGTH_SHORT).show();
    }
}

}
ND1010_
  • 3,743
  • 24
  • 41
0

if the permission is granted by :

checkSelfPermission(Manifest.permission.READ_CONTACTS)

Request permissions if necessary

if (checkSelfPermission(Manifest.permission.READ_CONTACTS)
            != PackageManager.PERMISSION_GRANTED) {
        requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},
                MY_PERMISSIONS_REQUEST_READ_CONTACTS);

        /* MY_PERMISSIONS_REQUEST_READ_CONTACTS is an app-defined int constant */

        return;
    }

Handle the permissions request response

@Override
public void onRequestPermissionsResult(int requestCode,
        String permissions[], int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                /* permission granted */

            } else {

                /* permission denied */
            }
            return;
        }

        /* check for other permissions */
    }
}

Also you can use a library like this, anyway good luck!

Ariel Yust
  • 585
  • 4
  • 11