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

Start Service from BroadcastReceiver never call service.onStartCommand() method

我有播放音频文件的音乐服务。我从 activity 开始这项服务。当我从发送广播接收器的通知中单击播放按钮时,我使用 play/pause 按钮发送通知并且它正在工作。在我调用 context.startService(intentService) 的 onReceive(Context context, Intent intent) 方法中,问题是 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>

我觉得在你的代码中应该有一个细微的变化,你应该替换以下行:

context.startService(intent);

来自

context.startService(serviceIntent);

希望对您有所帮助。