Я пытаюсь разработать подпрограмму Tasker (в конечном счете, экспортировать как приложение), которая будет напрямую обращаться к «ящику приложения» модуля запуска электронных чернил. Send Intent не работает, и запуск команды оболочки также не работает. Наверное, я не понимаю, что я прочитал о поиске намерений в AndroidManifest.
Когда я запустил лаунчер и перешел в секцию ящиков приложений, я сделал это через adb:
dumpsys window windows | grep -E 'mCurrentFocus'
Результат:
com.harasoft.relaunch/com.harasoft.relaunch.AllApplications
Если я правильно понял, это должно быть имя пакета / активность.
AndroidManifest.xml (https://github.com/yiselieren/ReLaunch/blob/master/AndroidManifest.xml) для приложения показывает AllApplications как намерение (и для него задан фильтр намерений), так что это выглядит хорошо.
Отправка намерения из Tasker с использованием только имени пакета, и действие выдает ошибку выхода. Через adb shell я пробовал это:
# am start -n com.harasoft.relaunch/com.harasoft.relaunch.AllApplications
Это не дает желаемого результата, но вместо этого выдает ошибку:
Starting: Intent { cmp=com.harasoft.relaunch/.AllApplications }
java.lang.SecurityException: Permission Denial: starting Intent {
flg=0x10000000 cmp=com.harasoft.relaunch/.AllApplications } from null
(pid=-1, uid=-1) requires null
И вот где я застрял. Я читал об этой ошибке, но не все понял. Кажется, что намерение либо должно быть явно экспортировано в Манифесте, либо сопровождаться фильтром намерения. В Манифесте есть фильтр намерений (android.intent.action.LAUNCHER), если я не понял это неправильно. Содержимое в Манифесте, начинающееся с "." кажется, что работают, пока те без "." не делайте. Я читал, что это не должно иметь никакого значения.
Может кто-нибудь просветить меня?