这个答案是关于如何在android中添加系统服务的问题: https://stackoverflow.com/a/7434249/1993710
但是,每次android系统构建我的东西时,我都懒得等待几个小时,所以我通过android-studio将我的服务作为常规apk部署到/ system / app然后在应用程序中应该使用我做的服务:
private ServiceConnection myAidlConnection = new ServiceConnection(){
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// do stuff
}
}
public void bindService(Context context){
Intent intent = new Intent();
intent.setClassName("my.service","my.service.Service");
intent.setAction("my.service.TOAST");
intent.putExtra("text", "stulle");
context.bindService(intent, myAidlConnection, Context.BIND_AUTO_CREATE);
}
这个工作正常,只要该应用程序也是系统apk。如果它不是系统apk,则永远不会调用myAidlConnection.onServiceConnected。我认为这是某种安全问题,因此您无法绑定来自非特权应用程序的任意系统服务。
有没有办法允许我的系统服务被任何人绑定,或者它是否真的必须通过getSystemService()传递绑定器?
答案 0 :(得分:2)
第三方应用可以绑定到“导出”的任何服务,无论它是否是系统服务。
您的“my.service.Service”是否已导出?
有关“已导出”的详细信息:http://developer.android.com/guide/topics/manifest/service-element.html#exported