Service端:
需要声明android:exported="true",这样别的APP才能访问。<service android:name=" com.easyliu.watchgesture.service.GestureDetectorService "
android:exported= "true">
客户端:
需要知道Sercvice的名字以及其Application所在的包名。
public static final String NAME_GESTURE_DETECTOR_REMOTE_SERVICE = "com.easyliu.watchgesture.service.GestureDetectorService" ;public static final String PACKAGE_GESTURE_DETECTOR_REMOTE_SERVICE = "com.easyliu.watchgestureremoteservice" ;
//启动服务
Intent startIntent = new Intent ();
ComponentName componentName = new ComponentName(
PACKAGE_GESTURE_DETECTOR_REMOTE_SERVICE ,
NAME_GESTURE_DETECTOR_REMOTE_SERVICE);
startIntent .setComponent (componentName );
startService( startIntent) ;
//绑定服务
Intent startIntent = new Intent ();
ComponentName componentName = new ComponentName(
PACKAGE_GESTURE_DETECTOR_REMOTE_SERVICE ,
NAME_GESTURE_DETECTOR_REMOTE_SERVICE);
startIntent .setComponent (componentName );
bindService( startIntent, mConnection, Context.BIND_AUTO_CREATE) ;
2、隐式启动
Service端:
需要设置一个Action,我们可以把Action的名字设置成Service的全路径名字。在这种情况下android:exported默认为true。
<service android:name="com.easyliu.watchgesture.service.GestureDetectorService"><intent-filter >
<action android:name="com.easyliu.watchgesture.service.GestureDetectorService" />
</intent-filter>
</service >
客户端:
需要同时设置Action和package,记住之设置Action会报错,必须同时设置其包名。
Intent startIntent = new Intent ();startIntent .setAction ("com.easyliu.watchgesture.service.GestureDetectorService" );
startIntent .setPackage (PACKAGE_GESTURE_DETECTOR_REMOTE_SERVICE);
startService( startIntent) ;Android官网推荐用显式的方式启动Service。
关于Service详细介绍,请看:http://blog.csdn.net/liuyi1207164339/article/details/51669971