我一直在尝试使用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>
这里有人有解决这个问题的方法吗?
非常感谢提前!
答案 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;;
否则我按照下面的步骤(我先做了这个并且正在工作,但我认为上面也可以是一个解决方案,以免更改文件,位置等。)。
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;
}
}
AndroidManifest.xml中的更改
<service android:name="com.my.app.MyService">
<intent-filter>
<action android:name="com.my.app.MyService" />
</intent-filter>
</service>
转到文件com.red_folder.phonegap.plugin.backgroundservice.BackgroundService.BackgroundServicePluginLogic.java
第163行并更改
String serviceName = data.getString(0);
到
String serviceName =&#34; com.my.app.MyService&#34 ;;
我希望能帮到你!!!