【问题标题】:Start service in another package without Intent filter在另一个没有 Intent 过滤器的包中启动服务
【发布时间】:2013-09-04 00:06:58
【问题描述】:

有没有办法在不使用清单文件中的 Intent-Filter 标记的情况下启动另一个包中定义的 Android 服务?由于某种原因,我无法更新包含服务的应用程序的清单文件。

【问题讨论】:

    标签: android android-intent android-service


    【解决方案1】:

    如果你知道确切的包名和服务名,你可以用它来创建一个 Intent。不过,该服务仍需要在其他清单中声明。

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

    【讨论】:

    • 我曾尝试过这种方法,但没有奏效。它是否需要在目标应用程序中进行任何清单更改?
    • 其他服务需要在它自己的清单中声明,否则 Android 将拒绝运行它。这只是让您可以在没有其他意图过滤器的情况下定位服务。
    • 是的,该服务已经存在于应用的清单中。只是它没有意图过滤器。而且我无法使用这种方法使其工作:(
    • 如果服务存在于其他应用程序的清单中,但没有意图过滤器,则根据定义,该服务是私有的。除非服务的清单定义包含意图过滤器或 android:exported="true",否则您不能从另一个应用程序显式启动它
    猜你喜欢
    • 2022-01-17
    • 2015-11-02
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-08
    • 1970-01-01
    • 2016-07-02
    相关资源
    最近更新 更多