FilipeOS
FilipeOS

Reputation: 859

Android 6.0 Don't Ask Permission

I've follow the android developer tutorial and video but after I test on the phone, it don't ask permissions, any idea?

I've placed the code inside ONCREATE and added the required functions. Android Studio executed without any problem.

int REQUEST_READ_PHONE;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ...

    //PERMISSION CHECK
    if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
        //CHECK IF SERVICE IS RUNNING
        executeService();

        if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.READ_PHONE_STATE)) {
            Toast.makeText(MainActivity.this, "Permission REQUIRED to work properly", Toast.LENGTH_LONG).show();
        }

        //REQUEST PERMISSION
        ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_READ_PHONE);
    }

}

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

    if (requestCode == REQUEST_READ_PHONE){

            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                //PERMISSION GRANTED
                executeService();
            } else {
                //PERMISSION DENIED permission denied
                Toast.makeText(MainActivity.this, "Application will not work properly", Toast.LENGTH_LONG).show();
            }
    } else {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }
}

private void executeService() {
    //DO STUFF HERE
}

Upvotes: 0

Views: 1959

Answers (2)

Dean Wild
Dean Wild

Reputation: 5954

Your logic is wrong:

Try this:

if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
    executeService();
} else {

    if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.READ_PHONE_STATE)) {
    Toast.makeText(MainActivity.this, "Permission REQUIRED to work properly", Toast.LENGTH_LONG).show();
    }

    //REQUEST PERMISSION
    ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_READ_PHONE);

}

Also, you'll only see the Permission Dialog on devices running Android 6.0.

Upvotes: 1

thedarkpassenger
thedarkpassenger

Reputation: 7348

Do two things

1) Check Target Sdk Version is set to 23.

2) Change this piece of code

ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED

to

ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED

Upvotes: 2

Related Questions