У меня есть приложение для Android, которое я могу расширить с помощью динамической библиотеки.У меня нет исходного кода основного приложения, и я не могу его изменить.За исключением манифеста андроида.У меня есть * .aar-файл основного приложения и сценария, который строит все вместе.
Главное приложение создает новый класс Runnable моей библиотеки и передает ему контекст (действие).Я сделал библиотеку из примера шаблона, и она использует код c ++, вызывающий методы java, используя нативные вызовы, такие как jenv->CallObjectMethod
.
. В начале у меня было 2 проблемы.Во-первых, мне нужно было сделать приемник для системных событий.Я решаю это путем динамического создания получателя из кода с использованием контекста, полученного из основного приложения.
Вторая проблема, которую я не могу решить, и просьба о помощи: мне нужно создать службу с фильтром намерений для какого-либо события в моей динамикебиблиотека, и мне нужно это позвонить.Но служба должна быть в манифесте, и я записываю ее в нее, но она не вызывает.
Я попытался включить раздел в основной манифест приложения следующим образом:
</service>
<service
android:name="com.test.MyLib.MyService"
android:enabled="true"
android:exported="true">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="...some action..." />
</intent-filter>
</service>
Я вижу, как Android пытается вызвать этот сервис как результат действия, но на самом деле это не вызов.Есть ли способ заставить его работать или каким-то образом динамически создавать сервис с намеренным фильтром из кода, как я делал с получателем?