服务意图必须明确:有额外的

时间:2018-04-29 05:46:16

标签: android xamarin xamarin.android

我尝试了不同的东西,但不确定出了什么问题,我在开始这项特定服务时遇到了这个错误。

  

服务意图必须明确:意图{   act = com.xamarin.action.PLAY(有额外内容)}

我在启动服务时传递字符串ID,如下所示

var intent = new Intent(MediaService.ActionPlay);
intent.PutExtra("ID", ID);                                
StartService(intent); // Error here

我的服务类似于以下内容

[Service]
[IntentFilter(new[] { ActionPlay, ActionPause, ActionStop })]
public class MediaService: Service
  {
   public const string ActionPlay = "com.xamarin.action.PLAY";
   public const string ActionPause = "com.xamarin.action.PAUSE";
   public const string ActionStop = "com.xamarin.action.STOP";

   public override StartCommandResult OnStartCommand(Intent intent, 
     StartCommandFlags flags, int startId)
     { 
       switch (intent.Action)
                {
                    case ActionPlay: Play(intent.GetStringExtra("ID")); break;
                    case ActionStop: Stop(); break;
                    case ActionPause: Pause(); break;
                }
     }     
  }

游戏动作如下

public bool Play(string playID)
{ 
   ....
}

我做错了什么。

1 个答案:

答案 0 :(得分:1)

您可以设置意图的包ID:

intent.SetPackage(PackageName);

或者使用当前上下文和Java类(或C#类型):

var intent = new Intent(Application.Context, typeof(MediaService));