android-system:允许应用绑定到系统服务

时间:2016-01-10 18:36:15

标签: android android-service

这个答案是关于如何在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()传递绑定器?

1 个答案:

答案 0 :(得分:2)

第三方应用可以绑定到“导出”的任何服务,无论它是否是系统服务。
您的“my.service.Service”是否已导出?

有关“已导出”的详细信息:http://developer.android.com/guide/topics/manifest/service-element.html#exported