Unity3D Android插件:无法启动服务

我的目标是启动一个服务,通过.jar文件添加为Unity3D中的android插件。 在这个线程中,我发现了如何启动它,我可以最终获得本机代码。 但是我在日志中遇到了以下问题:

07-14 15:02:23.965: W/ActivityManager(444): Unable to start service Intent { cmp=net.calipssoone.bnh/com.activitychecker.adservice.CheckService } U=0: not found 

我用谷歌搜索,发现问题在清单中,但无法弄清楚我做错了什么。 以下是清单中声明服务的方式:

             

它在Java中的包名实际上是相同的: com.activitychecker.adservice

StartReceiver类:

  public class StartReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) {} } 

CheckService类:

 public class CheckService extends Service { public void onCreate(){} public long getCurrentTime(){} public void loadInfo(){} public int onStartCommand(Intent intent, int flags, int startId){} public void onDestroy() {} public IBinder onBind(Intent intent) {} public class MyThread extends Thread { public void run() {} public void cancel() {} public boolean check(String bundle){} } private class ScreenBroadcastReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) {} } } 

UPD:我改变了我的观点:

  

至:

  

并且日志错误更改为:

 07-14 17:46:13.455: W/ActivityManager(444): Unable to start service Intent { act=com.activitychecker.adservice.CheckService } U=0: not found 

当我尝试使用Intent启动服务时,我遇到了同样的exception。 当我使用Context时,它工作。 因此,将上一个问题中的代码替换为使用Context而不是Intent

Java

 public final class StatusCheckStarter { static Context myContext; // Called From C# to get the Context Instance public static void receiveContextInstance(Context tempContext) { myContext = tempContext; } public static void StartCheckerService() { myContext.startService(new Intent(myContext, CheckService.class)); } } 

C#

 AndroidJavaClass unityClass; AndroidJavaObject unityActivity; AndroidJavaObject unityContext; AndroidJavaClass customClass; void Start() { //Replace with your full package name sendActivityReference("com.example.StatusCheckStarter"); //Now, start service startService(); } void sendActivityReference(string packageName) { unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); unityActivity = unityClass.GetStatic("currentActivity"); unityContext = unityActivity.Call("getApplicationContext"); customClass = new AndroidJavaClass(packageName); customClass.CallStatic("receiveContextInstance", unityContext); } void startService() { customClass.CallStatic("StartCheckerService"); } 

评论是否有任何问题。

我发现解决方案直接将清单封装到assets / android文件夹中。