Почему 64-битный проект в Visual Studio по-прежнему использует 32-битные статические библиотеки? [Дубликат]

Я успешно реализовал простой код для множественного разрешения в один раз. Выполните следующие шаги: 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;
    }
}
0
задан Peter Cordes 1 April 2019 в 05:17
поделиться

1 ответ

x86 и x86-64 - две разные архитектуры с разными наборами команд. Каждый набор команд похож на отдельный язык, поэтому двоичные файлы на этих архитектурах не могут быть связаны вместе, так как одна архитектура не понимает "язык" другой. Даже с одним и тем же набором команд может быть несколько соглашений о вызовах , что означает, что иногда связывание двух 32-битных объектов невозможно, если они используют разные соглашения

Динамические библиотеки и статические библиотеки - все. .. библиотеки. Они должны быть связаны с скомпилированными объектами в какой-то момент (время выполнения или время ссылки). Как и выше, связывание различных двоичных файлов в архитектурах невозможно, поэтому вам нужны 64-битные библиотеки для 64-битных приложений

0
ответ дан phuclv 1 April 2019 в 05:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: