Главная » Блог » Решение проблем в Bitrix. Не удалось обнаружить код вызова компонента.
При попытки изменить параметры в режиме правки, возникает ошибка: «Не удалось обнаружить код вызова компонента». Причин такой ошибки может быть несколько, но мы рассмотри только одну.
Причина ошибки заключается в том, что разбор кода не может обнаружить нужную структуру. Обычно такая ошибка возникает, когда сделаны неверные установки для сервера.
Для начала давайте сделаем проверку системы, идем:
Административная часть → Настройки → Инструменты → Проверка системы → Начать тестирование.
Ошибка! Сайт работает в UTF кодировке, настройки mbstring:

Как такое может получиться, спросите вы, ведь при установки системы мы уже прописывали эти параметры? Во время установки, bitrix перезаписывает фаил .htaccess, и по этому может потеряться запись.
Исправление: открываем наш FTP клиент, или чем вам удобно пользоваться для редактирования файлов, и добавляем туда строчки в зону:
php_value mbstring.func_overload 2 php_value mbstring.internal_encoding UTF-8
Это будет выглядить примерно вот так:
<IfModule mod_php5.c> php_flag allow_call_time_pass_reference 1 php_flag session.use_trans_sid off php_value display_errors off php_value mbstring.func_overload 2 php_value mbstring.internal_encoding UTF-8 </IfModule>
Сохраняем и проверяем, пропала ли ошибка.
|
Пользователь 46219 Постоянный посетитель Сообщений: 283 |
#26 0 15.03.2010 07:25:00 Теме уже год, а проблему так и не решили, у меня периодически вываливается эта ошибка! |
|
Пользователь 29177 Заглянувший Сообщений: 10 |
#27 0 18.03.2010 00:50:51 Это известная тема, уже пару раз встречалась за последние пару недель нужно |
|
Пользователь 22559 Эксперт Сообщений: 454 |
#28 0 18.03.2010 00:58:36 да не в кодировке тут дело. Эта проблема появляется также, как и исчезает. Как вариант код вызова компонента засунуть в div, иногда помогает. |
|
Пользователь 29330 Постоянный посетитель Сообщений: 129 |
#29 0 06.04.2010 01:39:02 Выявил еще одну причину возникновения данной ошибки — расположение параметров функции IncludeComponent. У меня было так:
При такой записи возникала ошибка.
ошибка исчезла. |
||||
|
Пользователь 3841 Посетитель Сообщений: 84 |
#30 0 07.06.2010 11:16:31 Как вариант решение проблемы, которая возникла у меня на сайте с UTF-8 версией. Размещаем компонент, он выдаёт ошибку, размещаю ниже такой же, всё работает, захожу в настройки одного из компонентов и убираю не корректный текст в другой кодировке, сохраняю файл, захожу через ftp вычищаю ненужный шлак, оставляю один компонент, всё работает. Как мне кажется это происходит из — за разных кодировок, которые используются в редакторе нами и которые воспринимаются сайтом. |
|
Пользователь 42051 Заглянувший Сообщений: 10 |
#31 0 08.02.2011 10:29:11 Поддерживаю вариант с заключением кода компонента в div, мне помогло. |
|
Пользователь 12105 Заглянувший Сообщений: 34 |
#32 1 17.07.2011 00:29:31 Сталкивался с аналогичной проблемой: после добавления компонента через визуальный редактор, в режиме правки он не хотел открываться. Сохранил файл по фтп в кодировке UTF-8 (без BOM) и параметры компонента стали нормально отображаться. |
|
Пользователь 104124 Посетитель Сообщений: 77 |
#33 0 18.10.2011 04:39:19 Такая же тема: «Не удалось обнаружить код вызова компонента.» Прочитал эту ветку полностью, подровнял код в странице, добавил еще 3 компонента news.list, убрал <br /> (кстати, Битрикс его сам ставит и несколько искажает код страницы, если через визуальный редактор ее редактировать), все коды вызова компонентов — в своих div-ах, в общем все перепробовал, что тут рекомендовалось — ничего не изменилось. |
|
Пользователь 5739 Заглянувший Сообщений: 5 |
#34 0 06.03.2012 09:37:44 проблема решилась следуя этим рекомендациям, к сожалению кодировка сайта win 1251 и оставить файл в UTF не получится |
|
Пользователь 15637 Эксперт Сообщений: 772 |
#35 0 27.10.2012 12:47:07 Михаил Ливач пишет:
Спасибо! только что ходил по этим граблям, клиента хостеры перевели на новый сервер под Битрикс где по-умолчанию стояло под utf , через ваш совет быстро обнаружили в чем дело |
||||
|
Пользователь 87021 Заглянувший Сообщений: 10 |
#36 0 19.08.2013 21:36:00
Согласна! это основной факт этой ошибки |
||
|
Пользователь 138938 Заглянувший Сообщений: 12 |
#37 0 28.08.2013 08:30:41 Добавил код компонента в шаблон (скопировал из визуального редактора), столкнулся с такой же проблемой. Удалил код, вернул всё как было. Теперь все компоненты на странице и на других страницах с другим шаблоном тоже выдают эту ошибку. До этого всё работало как надо. С каждой минутой люблю битрикс всё больше… |
|
Пользователь 3308 Гуру Сообщений: 3367 Студия тиражных веб-решений «ROMZA» |
#38 0 04.09.2013 06:45:59 Досадный и уже сильно надоевший «плавающий» баг.. |
|
Пользователь 3494 Посетитель Сообщений: 71 |
#39 0 26.11.2013 17:01:59 Я редактировал шаблон по фтп. |
|
Пользователь 230441 Заглянувший Сообщений: 3 |
#40 0 08.03.2014 17:13:43 У меня выходила ошибка при вызове настройки компонентов в WorkArea (то есть ошибка была в index.php). Файл редактировал под себя. Решилась проблема моментально после того, как удалил из файла комментарий, который сам и сделал. |
|
Пользователь 90423 Заглянувший Сообщений: 30 |
#41 0 09.07.2014 15:20:17 Ещё одной причиной возникновения такой ошибки является большое количество символов в функции SetPageProperty() при установке keywords и description. |
|
Пользователь 285392 Заглянувший Сообщений: 11 |
#42 0 16.03.2015 10:58:43 Да проблемы была из за тегов HTML. Компонент news.list был у меня в файле футера. Так как в футере есть закрывающие основные блоки div’ы битрикс считал его HTML код не валидным выдавал ошибку. Вообще непонятно какое ему дело до разметки страницы |
|
Пользователь 252907 Заглянувший Сообщений: 1 |
#43 1 03.06.2015 15:29:33 Была такая же беда, лечим следующим образом: Вот такой бяки при проверке системы быть не должно http://joxi.ru/K8237o9Cp8RX2O Должно быть от так от http://joxi.ru/812Ma6WUWk5y2J |
|
Пользователь 726877 Заглянувший Сообщений: 1 |
#44 0 12.10.2016 16:54:45 В моем случае проблема решилась объявлением массива arrFilter, который использовался в фильтре |
|
Пользователь 106414 Посетитель Сообщений: 43 |
#45 0 02.06.2017 18:52:51
Поплясала с бубном. Но на правильную мысль натолкнуло именно это соображение Игоря. |
||
|
Пользователь 159951 Заглянувший Сообщений: 14 |
#46 0 12.10.2018 23:33:04
Подобная оказалась причина, решение: копировать header.php, footer.php -> сохранить в кодировке UTF-8 -> заменить. |
||
|
Пользователь 290272 Заглянувший Сообщений: 5 |
#47 0 30.09.2019 13:49:54 Помогло прописывание в htaccess |
|
Пользователь 64466 Посетитель Сообщений: 38 |
#48 0 23.01.2020 12:38:59 Такая же проблема на PHP 7.3 |
Как исправить ошибку «Notreadableerror: could not start video source» в javascript
Эта ошибка появляется когда вы вызываете getUsermedia, обычно на мобильных телефонах. Причиной обычно является то что вы не правильно «выключаете» вашу камеру перед послеующими действиями над ней. Например у меня ошибка появлялась когда я создал функцию смены камеры с фронтальной на пользовательскую.
Чтобы решить эту проблему вам нужно перед последующими вызовами getUserMedia «закрывать» камеру. Делается это так:
mediastream.getTracks().forEach(track => track.stop())
В переменной mediastream должен быть результат предыдущего вызова getUserMedia. После этого вы можете запустить getUserMedia заного, с новыми параметрами которые вы хотите задать итд.
Вот как я решил эту задачу через VueJS:
<template>
<div>
<div>
<button @click="rotateCamera">Rotate</button>
</div>
<video ref="cameraPicture" :srcObject.prop="mediastream" autoplay muted></video>
<record-button ref="record" @start-recording="startRecording" @stop-recording="stopRecording" v-if="mediastream"/>
</div>
</template>
<script>
import Vue from "vue";
import recordButton from "./RecordButton"
export default Vue.component('record-screen', {
data() {
return {
mediastream: "",
front: false,
};
},
methods: {
rotateCamera: function() {
this.front = !this.front;
},
updateMedia: function(){
var constraints = { audio: true, video: { facingMode: (this.front? "user" : "environment") } };
navigator.mediaDevices.getUserMedia(constraints)
.then((mediaStream) => {
this.mediastream = mediaStream
this.mediaRecorder = new MediaRecorder(mediaStream, {mimeType : 'video/webm;codecs=h264'});
this.mediaRecorder.ondataavailable = (blob) => {
this.$emit('setParentState', 'recorded_video', blob.data)
this.$emit('nextStage')
}
})
},
startRecording: function(){
this.mediaRecorder.start()
},
stopRecording: function(){
this.mediaRecorder.stop()
}
},
mounted(){
this.updateMedia()
},
watch: {
front: function () {
this.mediastream.getTracks().forEach(track => track.stop());
this.updateMedia()
},
}
});
</script>
Популярные сообщения из этого блога
DOS атака при помощи Python

Для атак вида «DOS» используют один мощный сервер который посылает жертве столько запросов, что жертва не успевает обработать их и выдаёт ошибку 503 либо 504. Для атаки нужна многопоточность, то есть нужно чтобы скрипт отправлял запрос не ожидая завершения предыдущего. В Python для этого есть библиотека «therading». Пример простейшего скрипта для доса: # coding: utf8 import threading import requests def dos (): while True : requests . get( «http://example.com» ) while True : threading . Thread(target = dos) . start() Скрипт рекомендую запускать только на мощных компьютерах а ещё лучше на VPS сервере. Вот наш скрипт в действии: Так же советую попробовать новый ддос скрипт который использует вместо потоков асинхронный код
Ведем телеграм канал через питон

Для создания ботов существует библиотека aiogram . Но не всегда обязательно использовать ботов, вить иногда вам просто нужно посылать сообщения в канал с собственного имени. Для этого больше всего подходит библиотека pyrogram . Устанавливаем её: pip install pyrogram Далее нужно создать телеграм приложение, от которого будут посылатся запросы. Создать приложение можно на https://my.telegram.org/apps . После регистрации приложения должна появится такая форма: Как посылать сообщения в канал from pyrogram import Client api_id = 12345 api_hash = «0123456789abcdef0123456789abcdef» with Client( «my_account» , api_id, api_hash) as app: app.send_message( «me» , «Greetings from **Pyrogram**!» ) Вместо api_id и api_hash нужно подставить свои данные, полученные при регистрации. Далее нужно ввести свой номер телефона, и ввести код который пришел на него. В этой же директории будет файл my_account.session . В нем содержится сама сейсия. В сох
Новый мощный скрипт для дудоса python 3
Этот скрипт сделан только для информативных целей, вы не должны использовать его в злых умыслах ибо это приследуется законом. В предыдущих статьях мы уже делали скрипт для создания нагрузок на сервер. Он использовал requests, и многопоточность. Но в современном питоне теперь возможно использовать асинхронность, это более эффективная схема взаимодействия вашего кода и ожиданий операций ввода вывода. Тк в синхронном коде ваша программа блокируется пока запрос завершается, требуется использовать потоки чтобы было возможно делать что-то пока данные от запроса не пришли. Чтобы не приходилось так делать создали асинхронность. Вместо того чтобы ждать пока данные придут, питону ОС сразу сообщает о новых данных и он сразу начинает обрабатывать только то что пришло. Под капотом requests использует запросы ОС: recv, sendv. Они блокируют ваш поток пока не придёт ответ. Но чтобы небыло блокировок существует другое апи: poll, epoll, kqueue. Оно сразу сообщает вам что что-то произошло и ваш код в это
Этот баг появляется довольно часто вне зависимости от версии битрикса. Внешне выглядит как окошко с текстом «Не удалось обнаружить код вызова компонента» и невозможность редактировать свойствакопировать шаблон. Далее будут приведены возможные причины возникновения ошибки и способы ее преодолеть.
Проявляется баг в случае когда битрикс неправильно определяет номер строки, на которой заканчивается вызов компонента. По неизвестной даже техподдержке причине это число иногда отличается от действительного.
Список факторов, при которых появлялась ошибка:
Несоответствие открывающих и закрывающих html тегов
Не отделенный вызов компонента, т.е. код подключения должен быть обособлен скобками <? ?>
Включенный в php флаг mbstring.func_overload = 2 при кодировке сайта cp1251
И совсем непонятные факторы без какой-либо причинно-следственной связи:
— имя класса «mail» в css
— тег ‹br /› перед вызовом компонента
Способы устранить ошибку
Удалить все комментарии в коде html
Явно указнать кодировку сайта в файле .htaccess, например «php_value mbstring.internal_encoding cp1251» или «php_value mbstring.internal_encoding UTF-8»
Вставить такую <?/**/?> конструкцию перед проблемным местом
Добавить и удалить несколько аналогичных компонентов рядом с неработающим
Заключить вызов компонента в отдельные <? ?>
Проверить и исправить расстановку html-тегов
Существует один разовый универсальный способ побороть ошибку. Разовость состоит в том, что по сути баг не исчезает, его можно временно «отключить» до перезагрузки страницы. Для этого открываем режим разработки bitrix в Mozilla (необходим установленный плагин FireBug), кликаем по иконке компонента и с помощью фаербага ищем нужную нам строчку — в ней будет присутствовать что-то вроде onclick=jsPopup.ShowDialog…

В середине этой строки ищем параметр src_line=число и меняем его на единицу (в общем случае нужное число можно посмотреть в исходном файле — оно будет равно номеру строки где заканчивается вызов компонента. Чаще всего достаточно отнять единицу от определенного автоматически, но неправильно битриксом).

Важно не перезагружать страницу! Теперь можно попробовать нажать на пункт меню — если число вписали правильно, откроется окно нужного действия.
Но самый лучший и правильный способ — обратиться в техподдержку. Как-никак продукт коммерческий и за недоработки надо отвечать…
Я получаю эту ошибку в Firefox 51, когда пытаюсь выполнить следующий код, и когда я выбираю свою камеру для ноутбука:
navigator.getMedia = (navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mediaDevices.getUserMedia ||
navigator.msGetUserMedia);
navigator.getMedia({
video: true,
audio: false
},
function(stream) {
if (navigator.mozGetUserMedia) {
video.mozSrcObject = stream;
} else {
var vendorURL = window.URL || window.webkitURL;
video.src = vendorURL.createObjectURL(stream);
}
video.play();
},
function(err) {
console.log("An error occured! " + err);
}
);
Ошибка:
NotReadableError: Failed to allocate videosource
Может кто-нибудь уточнить, что это значит? Разбита ли моя веб-камера? Вчера я использовал его с script без проблем. Он не выделяется для другого приложения.
Ответ 1
NotReadableError — это ошибка, соответствующая спецификации, NotReadableError Firefox, когда доступ к веб-камере разрешен, но невозможен.
Чаще всего это происходит в Windows, потому что веб-камера уже используется другим приложением. Firefox выдаст эту ошибку как в Windows, так и в Mac, даже если только процессы Windows получают эксклюзивный доступ к веб-камере.
Ошибка может произойти по другим причинам:
Хотя пользователь предоставил разрешение на использование соответствующих устройств, произошла аппаратная ошибка на уровне операционной системы, браузера или веб-страницы, которая препятствовала доступу к устройству.
Chrome выбрасывает TrackStartError. Это также бросает это по другим причинам. Вкладки Chrome могут использовать одно и то же устройство.
Источник: распространенные ошибки getUserMedia().
Ответ 2
Пожалуйста, убедитесь, что ваша камера не используется каким-либо другим приложением (хром, то есть или любой другой браузер).
Я потратил свой день на поиски решения, и, в конце концов, выяснил, что моя камера была использована другим приложением…
Ответ 3
Может кто-нибудь уточнить, что это значит? Моя веб-камера сломана? Я использовал его из сценария только вчера без проблем. Это не относится к другому приложению.
Я столкнулся с точно такой же проблемой!
Мне стыдно! Потому что тем временем я добавил событие beforeunload, включая event.preventDefault как event.preventDefault в примере.
После удаления этого event.preventDefault все работало нормально — как и ожидалось.
Ответ 4
Я столкнулся с той же проблемой в Windows 10, другие приложения, использующие мое видеоустройство, отсутствуют. Проблема заключалась в том, что в Windows 10 в Settings-> Разрешения приложений (в левом столбце) есть настройка для микрофона и камеры (Разрешить приложениям доступ к вашему микрофону/камере), которую необходимо включить. Неважно, что вы не найдете свой браузер в списке приложений под этой настройкой, просто включите его здесь и вуаля.
Ответ 5
Сообщение getUserMedia() error: NotReadableError отображался для Chromium, но не для веб-браузера Firefox. Я также заметил, что примеры WebRTC, использующие функцию getUserMedia без доступа к микрофону, работали правильно в Chromium.
Фактически я должен был убедиться, что мой микрофон включен и выбрать правильный микрофон в настройках Chromium/Chrome. Тогда WebRTC с аудио и видео доступом работал корректно.
Если это не проблема с микрофоном, это также может быть проблема с веб-камерой, поэтому вы должны убедиться, что ваша веб-камера включена и правильно выбрана в настройках Chromium/Chrome.
Обратите внимание, что только одно приложение одновременно может использовать веб-камеру/микрофон.
Возможные проблемы:
1. Неверно вызван компонент
Компонентe нужно вызывать отдельно, то есть заключен и отделен от остального кода (<? ?>)
Пример возможной ошибки:
<?
echo "test"; $APPLICATION->IncludeComponent(
"bitrix:photogallery.section",
"",
Array(
"IBLOCK_TYPE" => "OW",
"IBLOCK_ID" => "",
"SECTION_ID" => $_REQUEST["SECTION_ID"],
"SECTION_CODE" => "",
"USER_ALIAS" => "",
"BEHAVIOUR" => "",
"INDEX_URL" => "index.php",
"SET_TITLE" => "Y"
)
);
?>
Решение:
<?$IncludeComponent("bitrix:photogallery.section",
"", Array( "IBLOCK_TYPE" => "OW", "IBLOCK_ID" => "", "SECTION_ID" => $_REQUEST["SECTION_ID"], "SECTION_CODE" => "", "USER_ALIAS" => "", "BEHAVIOUR" => "", "INDEX_URL" => "index.php", "SET_TITLE" => "Y" ) );?>
2. Ошибка в настройках php
Требуемые значения:
mbstring.func_overload=2 mbstring.internal_encoding=utf-8
Проверить можно зайдя в http : // ВАШСАЙТ //bitrix/admin/site_checker.php и нажав тестирование
Если настройки не верны, то он об этом скажет.
Решение проблемы:
в файле php.ini добавить или изменить
mbstring.func_overload=2 mbstring.internal_encoding=utf-8
Где лежит файл или как настроить требуется узнать у вашего хостинга.
Post Views: 2
Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.
Типичные ошибки
|
Цитатник веб-разработчиков. TeppopucT: И правда, все проблемы в руках! Ищите ошибки в коде!!! Все теги должны отвечать стандартам. А Битрикс, подхватит!!! Который раз помогает очистка кода. Пусть и ручная работа, и кропотливая, но с достойным финалом! |
Не удалось обнаружить код вызова компонента
Довольно распространенная ошибка, когда вы в режиме редактирования пытаетесь отредактировать параметры какого-то компонента на странице. Хоть в коде и присутствует строка $APPLICATION->IncludeComponent() (вызов компонента), всё равно иногда появляется ошибка Не удалось обнаружить код вызова компонента. К сожалению, универсального решения данной проблемы нет.
Ошибка может возникать из-за разных причин:
- Код вызова компонента не взят в отдельные
<? ?>.Решение: проверить отделенность кода компонента от другого php-кода на странице.
То есть, если у вас на странице php-код в таком виде:
<? php-код компонент php-код ?>
то будет ошибка.
Необходимо, чтобы было так:
<? php-код ?> <? компонент ?> <? php-код ?>
Можно также попробовать вставить такую конструкцию перед вызовом компонента:
<?/**/?>. - Ошибки в html коде на странице.
Решение: проверить валидность html кода, убрать все html-комментарии со страницы.
- Несоответствие кодировки файла с проектом в целом.
Решение: проверить кодировку файла. Проверить на ошибки на странице Проверка системы. В случае ошибки с кодировкой установить настройки PHP:
Для сайта с кодировкой windows-1251:
php_value mbstring.func_overload 0 php_value mbstring.internal_encoding cp1251
Для сайта с кодировкой UTF-8:
php_value mbstring.func_overload 2 php_value mbstring.internal_encoding utf-8
Начиная с PHP 5.2.9 php_value mbstring.func_overload 2 в .htaccess не работает…
- Несоответствие между владельцем файла и пользователем под которым система файлы редактирует.
Решение: проверить права пользователя.
- Взаимное влияние аналогичных компонентов.
Решение: удалить несколько аналогичных компонентов рядом с неработающим.
Назад в раздел
Подписаться на новые материалы раздела:
I wanted to add the solution to my saga of fighting this particular error. I am using Ionic to build a WebRTC chat app, and have got this error with my native Android build. Here are the things that made all the difference.
Install Ionic’s AndroidPermissions plugin…
$ ionic cordova plugin add cordova-plugin-android-permissions
$ npm install --save @ionic-native/android-permissions
Don’t forget to add it to app.module.ts as a provider
In your component’s .ts file…
import { AndroidPermissions } from '@ionic-native/android-permissions';
...
iosCordova = false; // I use these for easy if-else logic later
androidCordova = false; // but I want you to see how I handle the logic
constructor(private platform:Platform, private androidPermissions: AndroidPermissions, etc...) {
navigator.getUserMedia = ((<any>navigator).getUserMedia || (<any>navigator).webkitGetUserMedia || (<any>navigator).mozGetUserMedia || (<any>navigator).msGetUserMedia);
this.iosCordova = this.platform.is('ios') && typeof cordova !== 'undefined';
this.androidCordova = this.platform.is('android') && typeof cordova !== 'undefined';
platform.ready().then(() => {
if( this.androidCordova ){ // is Android Native App
// alert("Android Native")
androidPermissions.requestPermissions(
[
androidPermissions.PERMISSION.CAMERA,
androidPermissions.PERMISSION.MODIFY_AUDIO_SETTINGS,
androidPermissions.PERMISSION.RECORD_AUDIO
]
).then(()=>{
//getDevices uses Enumerate Devices and initWebRTC starts the chat connections, etc...
this.getDevices().then(() => this.initWebRTC())
})
}
})
}
ngOnInit() {
if( !this.androidCordova ){ // is NOT Android Native App
// alert("NOT Android Native")
try {
this.getDevices().then(() => this.initWebRTC())
} catch(e) {
alert(e);
}
}
}
...
Inspect your config.xml at myAppName/config.xml and add xmlns:android=»http://schemas.android.com/apk/res/android» to your widget tag and add the permissions request. I had issues trying to include them in the previously existing tags, and just add these permissions requests right under the closing tags (creating my own second set)
<widget id="your.app" version="1.2.3" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
...
</platform> // previously existing platform name="android" closing tag
<platform name="android">
<custom-config-file parent="/manifest" target="AndroidManifest.xml">
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
</custom-config-file>
</platform>
<platform name="ios"> // previously existing platform name="ios" opening tag
Now, you need to inspect your AndroidManifest.xml file at myAppName/platforms/android/app/src/main/AndroidManifest.xml and look for these permissions. If they are not there, add them
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
Having these permissions declared in the manifest is critical to not being ignored. Apparently Android 26 is getting strict on permissions, and you can’t just ask willy-nilly for them. According to the documentation I’ve been reading, if you are not actually using the permission from within the code you are calling it from, your request will be dropped by the OS and the user will never see it.
Anyway, I’m very junior to all this Ionic and native device development, so if anyone has anything enlightening to add, please do so! Thanks everyone!