如何给Service添加access permission

时间:2016-06-07 15:50:13 来源:互联网 作者: 神秘的大神 字体:

//首先定义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");
}
//做实际的工作

}

}