我在android中遇到了远程服务。事情是我在包“a.b.c”中实现了一个远程服务,我希望其他应用程序能够访问此服务。我摆脱了整个蹩脚的援助,并设计了服务的“界面”,通过广播意图工作。到目前为止工作得很好......
问题是:我如何获得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();
}
};
}
这会在启动时立即崩溃我的应用程序。我做错了什么?我将如何实现这一目标?
一旦运行,命令和数据将通过广播传递。所以这应该不是真正的问题...
答案 0 :(得分:20)
第1步:使用<intent-filter>
字符串为<service>
设置<action>
。
步骤2:使用Intent
bindService()
与new Intent("this.is.my.custom.ACTION")
一起使用的操作字符串(例如{{1}})