Reputation: 859
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
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
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