Как запустить (и связать) удаленный сервис в Android, который реализован в другом приложении (другой пакет)? - PullRequest
8 голосов
/ 19 июня 2010

Я немного застрял с удаленными службами в Android.Дело в том, что я реализовал удаленный сервис в пакете «abc», и я хочу, чтобы другие приложения могли иметь доступ к этому сервису.Я избавился от всего этого дерьмового хелпа и спроектировал «интерфейс» сервиса для работы через широковещательные намерения.до сих пор работает нормально ...

проблема в том, как мне получить different приложение (другой пакет, другой проект, может быть, даже другой разработчик, ...) для запуска / остановки службы?

package d.e.f;

import a.b.c.*;

public class main extends Activity {
    protected ImyService myService;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Intent intent = new Intent(ImyService.class.getName());
        bindService(intent, sConnection, Context.BIND_AUTO_CREATE);
    }

    protected ServiceConnection sConnection = new ServiceConnection() {
        public void onServiceConnected(ComponentName className, IBinder binder) {
            wlService = ImyService.Stub.asInterface(binder);
            ServiceConnected = true;
            Toast.makeText(main.this, "service connected", Toast.LENGTH_SHORT).show();
        }

        public void onServiceDisconnected(ComponentName className) {
            wlService = null;
            ServiceConnected = false;
            Toast.makeText(main.this, "service disconnected", Toast.LENGTH_SHORT).show();
        }
    };
}

это приведет к сбою моего приложения сразу при запуске.что я сделал не так?как мне заставить это работать?

как только он будет запущен, команды и данные будут передаваться через трансляции.так что это не должно быть реальной проблемой ...

1 Ответ

20 голосов
/ 19 июня 2010

Шаг # 1: Установите <intent-filter> для вашего <service> со строкой <action>.

Шаг # 2: Используйте эту строку действия для Intent, который вы используете с bindService() (например, new Intent("this.is.my.custom.ACTION"))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...