There is "permission denied" error when accessing /dev/file in service. Root cause is that there is no system privilege for the service.
please refer to the below to write a service.http://processors.wiki.ti.com/index.php/Android-Adding_SystemService
the simple steps:
-
on /frameworks/base/services/jni/
add com_android_server_###Service.cpp
modified onload.cpp
int register_android_server_###Service(JNIEnv* env);
add the com_android_server_###Service.cpp to Android.mk
-
on /frameworks/base/services/java/com/android/server
add ###Service.java
class ###Service extends I###.Stub { ... }
modified SystemServer.java
###bus = new ###Service(); ServiceManager.addService("###bus", ###bus);
-
on /frameworks/base/core/java/android/os
add I###.aidl
-
on /frameworks/base/
add I###.aidl to Android.mk
-
on java gui application
import android.os.I###;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.IBinder;
IBinder b = ServiceManager.getService("###bus");
if (b == null) {
throw new RuntimeException("###bus service not available");
}
I### test = I###.Stub.asInterface(b);
test.function();