0

是否可以在 Android 中创建无法通过 startService 调用以编程方式启动的服务?我的意思是,具有此服务的应用程序和服务本身应该仅由用户显式启动,并且应该只能通过 bindService 访问,以防该服务已经启动。

4

2 回答 2

1

无法启动startService?否则将如何启动?

我怀疑您想要的是确保只有您自己的应用程序可以启动它,而不是任何外部非您编写的应用程序。如果是这种情况,请设置

android:exported="false"

在您想要以这种方式保护AndroidManifest.xml的每个文件中。Service

于 2012-09-10T19:26:16.527 回答
1

是否可以在 Android 中创建无法通过 startService 调用以编程方式启动的服务?

并不真地。您大概可以stopSelf()从调用onStartCommand(),尽管我从未尝试过,它可能会导致意想不到的问题。

服务本身应仅由用户显式启动

Android中的用户无法直接启动服务,只能通过某些应用程序,例如您自己的应用程序。

并且只能通过 bindService 访问

您无法阻止对 的调用startService()。如果您的服务未导出,其他应用程序将无法启动或绑定到它。

如果它启动了,它可以通过 bindService 提供给其他应用程序

仅当您将其导出时。正如@Argyle 所指出的,如果您不希望其他应用程序启动或绑定到该服务,请不要导出它。

于 2012-09-10T19:47:52.077 回答