Android 在另一个包中启动服务而不使用意向筛选器

Android 在另一个包中启动服务而不使用意向筛选器,android,android-intent,android-service,Android,Android Intent,Android Service,有没有一种方法可以启动另一个包中定义的Android服务,而不使用清单文件中的Intent Filter标记?由于某些原因,我无法更新包含该服务的应用程序的清单文件 如果您知道确切的包名和服务名,您可以使用它创建一个意图。但该服务仍需要在其他清单中声明 Intent intent = new Intent(); intent.setClassName("com.example.otherapplication", "com.example.otherapplication.ServiceName

有没有一种方法可以启动另一个包中定义的Android服务,而不使用清单文件中的Intent Filter标记?由于某些原因,我无法更新包含该服务的应用程序的清单文件

如果您知道确切的包名和服务名,您可以使用它创建一个意图。但该服务仍需要在其他清单中声明

Intent intent = new Intent();
intent.setClassName("com.example.otherapplication", "com.example.otherapplication.ServiceName");
startService(intent);

我尝试过这种方法,但没有成功。它是否需要在目标应用程序中更改任何清单?其他服务需要在其自己的清单中声明,否则Android将拒绝运行它。这只允许您在没有其他意图筛选器的情况下以服务为目标。是的,该服务已存在于应用程序的清单中。只是它没有一个意图过滤器。我无法使用这种方法使其工作:(如果该服务存在于其他应用程序的清单中,但没有意图过滤器,则根据定义,该服务是私有的。除非该服务的清单定义包含意图过滤器或
android:exported,否则无法从其他应用程序显式启动它=“正确”
这一点很好。请参见此处: