I\'ve got some legacy code which I am making permission safe for Marshmallow.
There is a broadcast using the PHONE_STATE permission as follows:
Tried to reproduce the issue on 6.0.1 with no success. I'm attaching a link for the test project I used.
The scenario is simple:
onReceive
is called.Unless anyone has a different result I think this issue is "solved" in a way.
As for the permission in Android Marsmallow you may want to check for permission before your receiver is called like this:
// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.PHONE_STATE)
!= PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
Manifest.permission.PHONE_STATE)) {
// Show an expanation to the user *asynchronously* -- don't block
// this thread waiting for the user's response! After the user
// sees the explanation, try again to request the permission.
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.PHONE_STATE},
MY_PERMISSIONS_REQUEST_PHONE_STATE);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
}
It is a late answer but i hope it helps someone!!!
The final version of Android M is not out yet (the final api is out, but not the platform code), so hopefully the platform will handle permission checking before calling your receiver.