Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Context context = (Permission) this;
// In an actual app, you'd want to request a permission when the user
// performs an action
// that requires that permission.
if (Build.VERSION.SDK_INT >= 23) {
getPermissionToReadUserContacts();
}
}
// Identifier for the permission request
private static final int READ_CONTACTS_PERMISSIONS_REQUEST = 1;
// Called when the user is performing an action which requires the app to
// read the
// user's contacts
public void getPermissionToReadUserContacts() {
// 1) Use the support library version
// ContextCompat.checkSelfPermission(...) to avoid
// checking the build version since Context.checkSelfPermission(...) is
// only available
// in Marshmallow
// 2) Always check for permission (even if permission has already been
// granted)
// since the user can revoke permissions at any time through Settings
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.READ_CONTACTS)) {
// 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(this,
new String[] { Manifest.permission.READ_CONTACTS },
READ_CONTACTS_PERMISSIONS_REQUEST);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case READ_CONTACTS_PERMISSIONS_REQUEST: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "Read Contacts permission granted",
Toast.LENGTH_SHORT).show();
// permission was granted, yay! Do the
// contacts-related task you need to do.
} else {
Toast.makeText(this, "Read Contacts permission denied",
Toast.LENGTH_SHORT).show();
// permission denied, boo! Disable the
// functionality that depends on this permission.
}
return;
}
// other 'case' lines to check for other
// permissions this app might request
}
}
// Callback with the request from calling requestPermissions(...)
/*
* @Override public void onRequestPermissionsResult(int requestCode, String
* permissions[], int[] grantResults) { // Make sure it's our original
* READ_CONTACTS request if (requestCode ==
* READ_CONTACTS_PERMISSIONS_REQUEST) { if (grantResults.length == 1 &&
* grantResults[0] == PackageManager.PERMISSION_GRANTED) {
* Toast.makeText(this, "Read Contacts permission granted",
* Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this,
* "Read Contacts permission denied", Toast.LENGTH_SHORT).show(); } } else {
* super.onRequestPermissionsResult(requestCode, permissions, grantResults);
* } }
*/
When i try this in a demo app it is working fine.But when i include in the project it is throwing a error as title.Any help will be appreciated.It is because of context i think so. ..........................................................................................................................................................................................................................................................................................................................................................
ContextCompat.checkSelfPermission()
requires support library in version 23 or higher.
Add in dependencies
block in lower-level build.gradle
:
compile 'com.android.support:appcompat-v7:23.1.1'
If you have previous version here (which you probably have), you should replace lane with provided by me.
This issue occurs because the support library is out of date.
If you're using Eclipse, I've found the most simple solution is to right-click the project and go to:
Android Tools > Add support library...
If this doesn't resolve the issue, you probably need to update the SDK first:
Window > Android SDK Manager > Install Updates
The support library will be added/updated and will no longer show this error.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With