2 回答

TA貢獻1848條經驗 獲得超6個贊
每當您需要權限時調用此 checkAndRequestPermissions() 方法
private boolean checkAndRequestPermissions() {
int ACCESS_FINE_LOCATION = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION);
int READ_PHONE_STATE = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE);
List<String> listPermissionsNeeded = new ArrayList<>();
if (READ_PHONE_STATE != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.READ_PHONE_STATE);
}
if (ACCESS_FINE_LOCATION != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.ACCESS_FINE_LOCATION);
}
if (!listPermissionsNeeded.isEmpty()) {
ActivityCompat.requestPermissions(this, listPermissionsNeeded.toArray
(new String[listPermissionsNeeded.size()]), 101);
return false;
}
return true;
}

TA貢獻1803條經驗 獲得超6個贊
試試下面的代碼?
public static boolean hasPermissions(Context context, String... permissions) {
? ? if (context != null && permissions != null) {
? ? ? ? for (String permission : permissions) {
? ? ? ? ? ? if (ActivityCompat.checkSelfPermission(context, permission) !=?
? ? ? ? ? ? ? ? PackageManager.PERMISSION_GRANTED) {
? ? ? ? ? ? ? ? return false;
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? return true;
}
int PERMISSION_ALL = 1;?
String[] PERMISSIONS = {
? android.Manifest.permission.ACCESS_FINE_LOCATION,?
? android.Manifest.permission.READ_PHONESTATE
};
if(!hasPermissions(this, PERMISSIONS)){
? ? ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
}
添加回答
舉報