Как использовать Messenger в качестве аргумента в Android IPC - PullRequest
2 голосов
/ 28 июля 2011

По сути, я хочу реализовать сервис, который предоставляет его интерфейс для использования через Android IPC в других приложениях. Затем клиентское приложение должно иметь возможность зарегистрировать Messenger для получения сообщений от службы. Поскольку Messenger является Parcelable, я подумал, что это должно быть так просто:

package com.example;
import android.os.Messenger;

interface MyRemoteService {
    void registerMessenger(in Messenger messenger);
}

Однако я получаю сообщение об ошибке couldn't find import for class android.os.Messenger

Я спросил Google и нашел сообщение в блоге от 2010 года, в котором проблема была решена путем изменения platform/android-<#>/framework.aidl внутри Android SDK, так что каждый разработчик должен изменить этот файл на своей локальной машине что не является жизнеспособным решением для меня.

Могу ли я зарегистрировать Messenger другим способом, который поддерживается в Android 7 API (2.1)?

Ответы [ 2 ]

1 голос
/ 30 сентября 2013

Кажется, что работает следующим способом:

Создать Messenger.aidl со следующим содержимым в пакете android.os:

package android.os;

parcelable Messenger;

Создайте свой собственный файл aidl, например так:

package com.example.name;

import android.os.Messenger;

interface IRemoteService {
    void registerMessenger(in Messenger messenger);
}
1 голос
/ 28 июля 2011

Создайте файл с именем Messenger.aidl в вашем проекте:

package com.your.package.here;

parcelable android.os.Messenger;
...