@TargetApi(Build.VERSION_CODES.M)
private void checkPermissions() {
List<String> permissionsNeeded =
new ArrayList<>();
final List<String> permissionsList =
new ArrayList<>();
if (deniedPermission(permissionsList, Manifest.permission.ACCESS_FINE_LOCATION))
permissionsNeeded.add(
"GPS");
if (deniedPermission(permissionsList, Manifest.permission.READ_CONTACTS))
permissionsNeeded.add(
"Read Contacts");
if (permissionsList.size() >
0) {
if (permissionsNeeded.size() >
0) {
String message =
"You need to grant access to " + permissionsNeeded.get(
0);
for (
int i =
1; i < permissionsNeeded.size(); i++)
message = message +
", " + permissionsNeeded.get(i);
requestPermissions(permissionsList.toArray(
new String[permissionsList.size()]), REQUEST_PERMISSIONS);
}
}
}
@TargetApi(Build.VERSION_CODES.M)
private boolean deniedPermission(List<String> permissionsList, String permission) {
if (checkSelfPermission(permission) == PackageManager.PERMISSION_DENIED) {
permissionsList.add(permission);
if (shouldShowRequestPermissionRationale(permission)) {
return
true;
}
}
return
false;
}
* Callback received when a permissions request has been completed.
*/
@Override
public void onRequestPermissionsResult(int requestCode,
String[] permissions,
int[] grantResults) {
if (requestCode == REQUEST_PERMISSIONS) {
Map<String, Integer> perms =
new HashMap<String, Integer>();
perms.put(Manifest.permission.ACCESS_FINE_LOCATION, PackageManager.PERMISSION_GRANTED);
perms.put(Manifest.permission.READ_CONTACTS, PackageManager.PERMISSION_GRANTED);
for (
int i =
0; i < permissions.length; i++)
perms.put(permissions[i], grantResults[i]);
if (perms.get(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
&& perms.get(Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED) {
Log.i(
"wxl",
"授权请求被通过");
}
else {
Log.i(
"wxl",
"授权请求不被通过");
}
}
}