Nano Hash - криптовалюты, майнинг, программирование

Метод checkSelfPermission(Context, String) не определен для типа ContextCompat.

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);
 * } }
 */

Когда я пробую это в демонстрационном приложении, оно работает нормально. Но когда я включаю в проект, оно выдает ошибку в качестве заголовка. Любая помощь будет оценена. Я так думаю из-за контекста. ................................................. ................................................. ................................................. ................................................. ................................................. ................................................. ..............................................


  • используйте компиляцию 'com.android.support:appcompat-v7:23.0.1' 05.01.2016

Ответы:


1

ContextCompat.checkSelfPermission() требуется библиотека поддержки версии 23 или выше.

Добавьте в блок dependencies нижнего уровня build.gradle:

compile 'com.android.support:appcompat-v7:23.1.1' 

Если у вас есть предыдущая версия здесь (которая у вас, вероятно, есть), вы должны заменить полосу на предоставленную мной.

05.01.2016
  • Как решить эту проблему с помощью Eclipse, где нет файлов сборки Gradle? У меня есть версия appcompat V7, загруженная Android SDK Manager? Я добавил в свой проект файл android-support-v7-appcompat.jar. Ошибка IDE eclipse, которую я получаю: метод checkSelfPermission(MyActivity, String) не определен по типу ContextCompat. В моем импорте: .v4.content.ContextCompat 18.02.2016
  • Я решил свою проблему. Я также не импортировал новую версию android-support-v4.jar. Google внес много изменений в этот .jar с тех пор, как я в последний раз использовал его в своем проекте. 19.02.2016
  • Можете ли вы предоставить мне ссылку на jar, чтобы я мог интегрировать разрешение во время выполнения с помощью eclipse? 20.06.2016
  • @Vasant Вам нужно загрузить библиотеку с помощью Android SDK, а затем импортировать ее самостоятельно - developer.android.com/topic/libraries/support-library/ 20.06.2016

  • 2

    Эта проблема возникает из-за того, что библиотека поддержки устарела.

    Если вы используете Eclipse, я нашел самое простое решение — щелкнуть проект правой кнопкой мыши и перейти к:

    Android Tools > Add support library...

    Если это не решит проблему, вам, вероятно, потребуется сначала обновить SDK:

    Window > Android SDK Manager > Install Updates

    Библиотека поддержки будет добавлена/обновлена ​​и больше не будет показывать эту ошибку.

    01.08.2017
  • Первое решение помогло мне в Eclipse. После добавления вспомогательных библиотек не забудьте перезапустить Eclipse. ТЮ 29.08.2018

  • 3

    Вы можете установить целевой Android вашего проекта на Android 6.0 или выше. Затем добавьте android-support-v4.jar

    25.10.2018
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..