//首先定义service的接口,imyservice.aidl package com.xxxx; import android.os.ibinder; import android.os.parcelfiledescriptor; interface imyservice { void doservice(int id); } //实现service类,myservice.java public class myservice extends im
//首先定义service的接口,imyservice.aidl
package com.xxxx;
import android.os.ibinder;
import android.os.parcelfiledescriptor;
interface imyservice {
void doservice(int id);
}
//实现service类,myservice.java
public class myservice extends imyservice.stub {
public static final string my_service = myservice;
private static myservice sservice = null;
static string permission = com.xxxx.permission.access_myservice;
/*
* the entry called by system server to create service.
*/
public static myservice main(context context) {
if (sservice != null) {
return sservice;
}
sservice = new myservice(context);
try {
slog.d(tag, created service);
servicemanager.addservice(my_service, sservice);
slog.d(tag, added service + my_service);
} catch (throwable e) {
slog.e(tag, failure starting myservice, e);
}
return sservice;
}
private myservice(context context) {
mcontext = context;
}
/*
* called from client app to retrieve interface
*/
public static imyservice getservice() {
ibinder b = servicemanager.getservice(my_service);
if ( b == null) {
return null;
}
return imyservice.stub.asinterface(b);
}
@override
public long opensession(ibinder clienttoken, int sensortype) throws remoteexception {
//添加访问权限
if (mcontext.checkcallingpermission(permission) != packagemanager.permission_granted) {
throw new remoteexception(permission not granted for myservice);
}
//做实际的工作
}
}