从BroadcastReceiver启动服务从不调用service.onStartCommand()方法

时间:2015-04-01 12:11:43

标签: android service broadcastreceiver

我有播放音频文件的音乐服务。我从我的活动开始这项服务。当我从发送广播接收器的通知点击播放按钮时,我发送带播放/暂停按钮的通知,并且它正在工作。在onReceive(Context context,Intent intent)方法中,我调用了context.startService(intentService),问题是MusicService.onStartCommand()从未被调用过。

我的接收器

public class PlayEpisodeReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Service Started", Toast.LENGTH_SHORT).show();
        if(MusicService.isRunning()) {

            Intent serviceIntent = new Intent(context, MusicService.class);

            serviceIntent.putExtra(AppConstants.ACTION_TYPE, AppConstants.ACTION_PLAY);

            context.startService(intent);
        }
    }

} 

我的清单:

<service
            android:enabled="true"
            android:name=".backgroundtasks.MusicService">
            <intent-filter>
                <action
                    android:name = "cc.gm.oscarradio.backgroundtasks.MusicService">
                </action>
            </intent-filter>
        </service>
        <receiver
            android:enabled="true"
            android:name=".Receivers.PlayEpisodeReceiver">
            <intent-filter>
                <action android:name = "cc.gm.oscarradio.ACTION_MUSIC"/>
            </intent-filter>
        </receiver>

1 个答案:

答案 0 :(得分:3)

在你的代码中我应该稍微改变一下,你应该替换以下行:

context.startService(intent);

通过

context.startService(serviceIntent);

希望这会对你有所帮助。