我如何启动(和绑定)在另一个应用程序(不同的包)中实现的android中的远程服务?

时间:2010-06-19 10:25:39

标签: android service

我在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();
        }
    };
}

这会在启动时立即崩溃我的应用程序。我做错了什么?我将如何实现这一目标?

一旦运行,命令和数据将通过广播传递。所以这应该不是真正的问题...

1 个答案:

答案 0 :(得分:20)

第1步:使用<intent-filter>字符串为<service>设置<action>

步骤2:使用Intent bindService()new Intent("this.is.my.custom.ACTION")一起使用的操作字符串(例如{{1}})