Я работаю над проектом, который требует, чтобы мое приложение могло отправлять тональные сигналы DTMF на частоте речевого восходящего канала во время активного вызова.
Мои 2 условия:
- Мы не используем настраиваемую платформу Android.
- Нам не нужно корневать телефон
Я провел несколько дней, выполняя домашнее задание, и знаю, что передача DTMF в вызове не поддерживается текущими стандартами API SDK/стандарта. Однако, используя соответствующие классы в com.android.internal.telephony
, я надеюсь подражать тому, как это делает родное приложение для телефона. Я следил за на этом сайте о том, как использовать внутренние API для стандартных сторонних приложений.
Я также настроился на среду ОС Android OS и могу запустить приложение "Телефон" в режиме отладки на эмуляторе, чтобы понять его внутреннюю работу.
Я пробовал различные способы на эмуляторе стандартных акций, но ошибки, которые я получил, были:
-
После попытки установить переименованное приложение на основе источника Phone.apk с помощью sharedUserId из android.uid.phone, я получил:
Ошибка установки: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
Без сомнения, из-за того, что у меня нет системного сертификата для его подписания.
-
После попытки создания пользовательского приложения на основе соответствующего кода передачи DTMF-кода из источника Phone.apk, я получаю следующую ошибку при настройке PhoneFactory;
java.lang.SecurityException: Permission Denial: не разрешено отправлять широковещательную версию android.provider.Telephony.SPN_STRINGS_UPDATED.
Без сомнения, из-за того, что у моего приложения нет правильных разрешений, хотя AndroidManifest.xml настроен с теми же правами, что и Phone.apk.
Я не понимаю, что еще я мог попробовать. У кого-нибудь есть предложения?
Спасибо заранее, Саймон.