'插件无法绑定到后台服务' - 红色文件夹phonegap插件

时间:2016-05-13 07:50:33

标签: java android cordova phonegap-plugins cordova-plugins

我一直在尝试使用this教程为我的cordova应用创建后台服务。我收到的错误是:Plugin unable to bind to background service.我一直在研究此错误,并在github here上提供了多项修复。但是,这些修复程序无法解决我的问题。我在上面的链接中发布了一条解释问题的评论,但目前还没有修复。还有更多评论说他们遇到了同样的问题。

提供的解决方案here,与我的问题无关,也没有解决问题。

我已按照教程的确切说明操作,并使用了与教程中提到的相同的名称。我的包名是:com.red_folder.phonegap.plugin.backgroundservice.sample 并在AndroidManifest.xml中声明了这样的服务:

<service android:name="com.red_folder.phonegap.plugin.backgroundservice.sample.MyService">
   <intent-filter>
      <action android:name="com.red_folder.phonegap.plugin.backgroundservice.sample.MyService" />
   </intent-filter>
</service>

这里有人有解决这个问题的方法吗?

非常感谢提前!

1 个答案:

答案 0 :(得分:0)

找到它!!!! :)。

首先检查你有

package com.red_folder.phonegap.plugin.backgroundservice.BackgroundService;

在MyService.java里面。

我没有注意到它丢失了。

执行此操作后,请转至com.red_folder.phonegap.plugin.backgroundservice.BackgroundService.BackgroundServicePluginLogic.java文件

第163行并更改

String serviceName = data.getString(0);

String serviceName =&#34; com.red_folder.phonegap.plugin.backgroundservice.BackgroundService.MyService&#34;;

否则我按照下面的步骤(我先做了这个并且正在工作,但我认为上面也可以是一个解决方案,以免更改文件,位置等。)。

  1. 将com.red_folder.phonegap.plugin.backgroundservice.BackgroundService中的MyService.java移至com.my.app
  2. 2.MyService.java是以下

    package com.my.app;
    
    import android.util.Log;
    
    import com.red_folder.phonegap.plugin.backgroundservice.BackgroundService;
    
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class MyService extends BackgroundService {
        @Override
        protected JSONObject doWork() {
            JSONObject result = new JSONObject();
    
            try {
                // Following three lines simply produce a text string with Hello World and the date & time (UK format)
                SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
                String now = df.format(new Date(System.currentTimeMillis()));
                String msg = "Hello World - its currently " + now;
    
                // We output the message to the logcat
                Log.d("MyService", msg);
    
                // We also provide the same message in our JSON Result
                result.put("Message", msg);
            } catch (JSONException e) {
                // In production code, you would have some exception handling here
            }
    
            return result;
        }
    
        @Override
        protected JSONObject getConfig() {
            return null;
        }
    
        @Override
        protected void setConfig(JSONObject config) {
    
        }
    
        @Override
        protected JSONObject initialiseLatestResult() {
            return null;
        }
    
    }
    
    1. AndroidManifest.xml中的更改

      <service android:name="com.my.app.MyService">
          <intent-filter>
              <action android:name="com.my.app.MyService" />
          </intent-filter>
      </service>
      
    2. 转到文件com.red_folder.phonegap.plugin.backgroundservice.BackgroundService.BackgroundServicePluginLogic.java

    3. 第163行并更改

      String serviceName = data.getString(0);

      String serviceName =&#34; com.my.app.MyService&#34 ;;

      我希望能帮到你!!!