Я успешно реализовал простой код для множественного разрешения в один раз. Выполните следующие шаги: 1. Создайте класс Utility.java, как показано ниже
public class Utility {
public static final int MY_PERMISSIONS_REQUEST = 123;
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public static boolean checkPermissions(Context context, String... permissions) {
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) {
for (String permission : permissions) {
if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) context, permission)) {
ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.CALL_PHONE,Manifest.permission.GET_ACCOUNTS}, MY_PERMISSIONS_REQUEST);
} else {
ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.CALL_PHONE,Manifest.permission.GET_ACCOUNTS}, MY_PERMISSIONS_REQUEST);
}
return false;
}
}
}
return true;
}
}
2: Теперь вызовите
boolean permissionCheck = Utility.checkPermissions(this, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.CALL_PHONE, Manifest.permission.GET_ACCOUNTS);
в свою активность onCreate () или согласно вашей логике.
3: Теперь проверьте разрешение перед выполнением операции для конкретной задачи
if (permissionCheck) {
performTaskOperation();//this method what you need to perform
} else {
Toast.makeText(this, "Need permission ON.", Toast.LENGTH_SHORT).show();
}
4: Теперь примените метод onRequestPermissionsResult () в вашей деятельности, как показано ниже
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case Utility.MY_PERMISSIONS_REQUEST:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if (userChoosenTask.equals("STORAGE"))
performTaskOperation();//this method what you need to perform
}
break;
}
}
x86 и x86-64 - две разные архитектуры с разными наборами команд. Каждый набор команд похож на отдельный язык, поэтому двоичные файлы на этих архитектурах не могут быть связаны вместе, так как одна архитектура не понимает "язык" другой. Даже с одним и тем же набором команд может быть несколько соглашений о вызовах , что означает, что иногда связывание двух 32-битных объектов невозможно, если они используют разные соглашения
Динамические библиотеки и статические библиотеки - все. .. библиотеки. Они должны быть связаны с скомпилированными объектами в какой-то момент (время выполнения или время ссылки). Как и выше, связывание различных двоичных файлов в архитектурах невозможно, поэтому вам нужны 64-битные библиотеки для 64-битных приложений