Намерение службы должно быть явным: имеет - PullRequest
0 голосов
/ 29 апреля 2018

Я пробовал разные вещи, но не зная, что идет не так, я получаю эту ошибку при запуске этой конкретной службы.

Сервисное намерение должно быть явным: Intent { 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 голосов
/ 29 апреля 2018

Вы можете установить идентификатор пакета вашего намерения:

intent.SetPackage(PackageName);

Или используйте текущий контекст и класс Java (или тип C #):

var intent = new Intent(Application.Context, typeof(MediaService));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...