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);
* } }
*/
Quand j'essaie cela dans une application de démonstration, il fonctionne bien. Mais quand j'inclus dans le projet, une erreur est lancée sous le titre.Toute aide sera appréciée.C'est à cause du contexte, je le crois .................................................. .................................................. .................................................. .................................................. .................................................. .................................................. ..............................................
ContextCompat.checkSelfPermission()
nécessite une bibliothèque de support à partir de la version 23.
Ajoutez le bloc dependencies
au build.gradle
de niveau inférieur:
compile 'com.Android.support:appcompat-v7:23.1.1'
Si vous avez la version précédente ici (que vous avez probablement), vous devez remplacer la voie fournie par moi.
Ce problème se produit car la bibliothèque de support est obsolète.
Si vous utilisez Eclipse, j'ai trouvé que la solution la plus simple consiste à cliquer avec le bouton droit sur le projet et à accéder à:
Android Tools > Add support library...
Si cela ne résout pas le problème, vous devrez probablement mettre à jour le SDK en premier:
Window > Android SDK Manager > Install Updates
La bibliothèque de support sera ajoutée/mise à jour et ne montrera plus cette erreur.
Vous pouvez définir la cible Android de votre projet sur Android 6.0 ou une version ultérieure. Ajoutez ensuite Android-support-v4.jar