я немного застреваю с удаленными сервисами в андроиде. вещь, я реализовал удаленный сервис в пакете "a.b.c", и я хочу, чтобы другие приложения смогли получить доступ к этому сервису. я избавился от целого дрянного aidl-материала и разработал "интерфейс" сервиса для работы через широковещательно переданные намерения. хорошо работает до сих пор...
проблема: как я получаю a 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. Настройте
для своей
с помощью
нить.
Шаг №2: Используйте эту строку действия для Intent
, который вы используете с bindService ()
(например, new Intent ("this.is.my.custom. ДЕЙСТВИЕ ")
)