如何使用外部意图启动服务?

时间:2013-04-21 19:15:14

标签: android service broadcastreceiver

我想知道是否可以使用其他应用发送的意图启动服务?我有一个android.intent.action.BOOT_COMPLETED的广播接收器,即使在收到意图时,它也能正常工作.BrodcastReceiver类没有实例化。我为tasker的外部意图做了类似的事情,但它不起作用。

<receiver android:name="BootReceiver">  
    <intent-filter>  
        <action android:name="android.intent.action.BOOT_COMPLETED" />  
    </intent-filter>  
</receiver>

1 个答案:

答案 0 :(得分:2)

  

我想知道是否可以使用其他应用发送的意图启动服务?

不确定

  

我有一个用于android.intent.action.BOOT_COMPLETED的广播接收器,即使在接收到意图时,它也能正常工作.BrodcastReceiver类没有实例化。

这是因为清单注册的BroadcastReceiver对象没有提前实例化。它们仅在发送匹配的广播时创建。

  

我为来自tasker的外部意图做了类似的事情,但它不起作用。

“它不起作用”是没有足够的信息供任何人帮助你。

但是,如果您的<service><intent-filter>,则其他应用可以创建与Intent匹配的<intent-filter>,并使用该android:exported="false"启动(或绑定)您的<service>服务。有两个例外:

  1. 如果您将<intent-filter>添加到android:permission,则第三方应用根本无法调用它,但在这种情况下,您可以更好地删除<service>

  2. 如果您在{{1}}元素上使用{{1}},则其他应用需要保留您声明的权限才能启动或绑定到您的服务