Android 服务意图必须明确:具有额外功能
我尝试了不同的方法,但不确定出了什么问题,我在启动此特定服务时出现了此错误 服务意图必须是明确的:意图{ act=com.xamarin.action.PLAY(有额外功能)} 启动服务时,我正在传递一个字符串Android 服务意图必须明确:具有额外功能,android,xamarin,xamarin.android,Android,Xamarin,Xamarin.android,我尝试了不同的方法,但不确定出了什么问题,我在启动此特定服务时出现了此错误 服务意图必须是明确的:意图{ act=com.xamarin.action.PLAY(有额外功能)} 启动服务时,我正在传递一个字符串ID,如下所示 var intent = new Intent(MediaService.ActionPlay); intent.PutExtra("ID", ID); StartService(intent); // Err
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)
{
....
}
我的服务如下所示
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)
{
....
}
其中播放动作如下所示
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)
{
....
}
我做错了什么。您可以设置您意图的软件包id:
intent.SetPackage(PackageName);
或者使用当前上下文和Java类(或C类型):
非常感谢,我使用了当前上下文和C#type以及
intent.SetAction(“com.xamarin.action.PLAY”)代码>并且它现在正在工作。非常感谢你的帮助。干杯,小伙子,我能帮忙