У меня есть два приложения, которые должны быть привязаны к службе. Приложение 1 запускает службу, если она еще не запущена.
startService(new Intent(this, Listener.class));
Затем он привязывает службу.
bindService(new Intent(this, Listener.class), mConnection, 0);
После этого будет вызван onServiceConnected
, и действие будет завершено, а служба будет отвязана. Служба все еще работает ("0" в bindService).
Пока здесь все в порядке.
Код второго приложения выглядит точно так же. Но он не запускает службу, потому что она уже запущена. bindService
возвращает истину. Так что все выглядит хорошо. Но onServiceConnected
никогда не вызывают.
Я нашел это: onServiceConnected() не вызывается Похоже на мою проблему, но действия находятся в том же приложении ... Я пробовал getApplicationContext.bindService
, но в первом приложении выдает исключение и не связывает мою службу, во втором ничего не меняется. Думаю, мне нужно что-то вроде getSystemContext
, потому что действия не находятся в одном приложении.
В моем ManifestFiles я помещаю следующее:
<service
android:name="com.example.tools.Listener"
android:label="Listener"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE" >
<intent-filter>
<action android:name="com.example.tools.Listener" />
</intent-filter>
</service>
Я надеюсь, что кто-то может помочь мне с этим.
С наилучшими пожеланиями
Фабиан
Intent
для запуска первой службы приложений? - person pskink   schedule 03.08.2017Intent
? - person pskink   schedule 03.08.2017new Intent(this, Listener.class)
из второго приложения, то как вы хотите запустить службу в первом приложении? - person pskink   schedule 03.08.2017new Intent(this, Listener.class)
? - person Fabian   schedule 03.08.2017PendingIntent
? Но чем мне нужно отправитьPendingIntent
из первого приложения во второе приложение, верно? Я думаю, это может быть проблемой, потому что они не знают друг друга. - person Fabian   schedule 03.08.2017PendingIntent
не требуется, внимательно прочитайте это - person pskink   schedule 04.08.2017bindService
always возвращает false. Он привязывает службу, если я устанавливаю packageName первого приложения, но тогда я не могу привязать службу во втором приложении. Он не находит его или есть исключениеjava.lang.SecurityException: не разрешено привязываться к намерению службы - person Fabian   schedule 07.08.2017new ComponentName("com.example.firstApp", "com.example.tools.Listener")
все в порядке, у вас проблемы с разрешением - person pskink   schedule 07.08.2017<intent-filter>
a/ не разрешено. - person Fabian   schedule 07.08.2017<service android:name="com.example.tools.Listener" android:label="Listener" android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE" > <intent-filter> <action android:name="com.example.tools.Listener" /> </intent-filter> </service>
Ноaction android:name
отличается от этого... Потому что я поставилnew ComponentName("com.example.firstApp", "com.example.tools.Listener")
- person Fabian   schedule 07.08.2017Intent i = new Intent(); i.setComponent(component);
вот и все - person pskink   schedule 07.08.2017"A basic Android app has no permissions associated with it by default, meaning it cannot do anything that would adversely impact the user experience or any data on the device. To make use of protected features of the device, you must include one or more <uses-permission> tags in your app manifest."
- person pskink   schedule 07.08.2017"android.permission.BIND_ACCESSIBILITY_SERVICE"
, к ней могут привязываться только системные приложения, подробнее здесь - person pskink   schedule 08.08.2017android.permission.BIND_ACCESSIBILITY_SERVICE
- в документах говорится:Must be required by an AccessibilityService, to ensure that only the system can bind to it. Protection level: signature
- person pskink   schedule 08.08.2017onServiceConnected
: Не удается маршалировать объекты, не являющиеся Parcelable, между процессами. Но это другая тема, и я думаю, что могу справиться с этим, используя Bundle. Спасибо еще раз - person Fabian   schedule 08.08.2017