Ho creato un plugin per il servizio in background (per eseguire l'applicazione in background) in PhoneGap.Come creare plugin in PhoneGap per eseguire l'applicazione in background?
Ecco il mio codice java per plugin:
public class BackgroundService extends Plugin {
@Override
public PluginResult execute(String action, JSONArray args, String callbackId)
{
PluginResult.Status status = PluginResult.Status.OK;
String result = "";
try {
if (action.equals("onCreate")) {
this.onCreate();
}
else if (action.equals("onBind")) {
Intent intent = null;
this.onBind(intent);
}
else if (action.equals("onDestroy")) {
this.onDestroy();
}
else if (action.equals("onStart")) {
Intent intent = null;
this.onStart(intent,args.getInt(1));
}
else if (action.equals("onUnbind")) {
Intent intent = null;
this.onUnbind(intent);
}
return new PluginResult(status, result);
} catch(JSONException e) {
return new PluginResult(PluginResult.Status.JSON_EXCEPTION);
}
}
public void onCreate() {
// TODO Auto-generated method stub
}
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
//super.onStart(intent, startId);
}
public boolean onUnbind(Intent intent) {
// TODO Auto-generated method stub
}
public void onPause()
{
super.webView.loadUrl("javascript:navigator.BackgroundService.onBackground();");
}
public void onResume()
{
super.webView.loadUrl("javascript:navigator.BackgroundService.onForeground();");
}
}
e il mio file js è:
function BackgroundService() {
};
BackgroundService.prototype.create = function() {
PhoneGap.exec(null, null, "BackgroundService", "onCreate", []);
};
BackgroundService.prototype.destroy = function() {
PhoneGap.exec(null, null, "BackgroundService", "onDestroy", []);
};
BackgroundService.prototype.start = function(intent,startId) {
PhoneGap.exec(null, null, "BackgroundService", "onStart", [intent,startId]);
};
BackgroundService.prototype.bind = function(intent) {
PhoneGap.exec(null, null, "BackgroundService", "onBind", [intent]);
};
BackgroundService.prototype.unbind = function(intent) {
PhoneGap.exec(null, null, "BackgroundService", "onUnbind", [intent]);
};
PhoneGap.addConstructor(function() {
PhoneGap.addPlugin("BackgroundService", new BackgroundService());
});
e nel mio index.html. Ho aggiunto il codice seguente nel mio clic del pulsante
navigator.BackgroundService.onCreate(); navigator.BackgroundService.onStart (intent, 1);
Il mio errore è:
ERROR/AndroidRuntime(14981): FATAL EXCEPTION: main
ERROR/AndroidRuntime(14981): java.lang.RuntimeException: Unable to instantiate service com.app.newly.BackgroundService: java.lang.ClassCastException: com.app.newly.BackgroundService
ERROR/AndroidRuntime(14981):at android.app.ActivityThread.handleCreateService(ActivityThread.java:2943)
ERROR/AndroidRuntime(14981):at android.app.ActivityThread.access$3300(ActivityThread.java:125)
ERROR/AndroidRuntime(14981): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2087)
ERROR/AndroidRuntime(14981): at android.os.Handler.dispatchMessage(Handler.java:99)
ERROR/AndroidRuntime(14981): at android.os.Looper.loop(Looper.java:123)
ERROR/AndroidRuntime(14981): at android.app.ActivityThread.main(ActivityThread.java:4627)
ERROR/AndroidRuntime(14981): at java.lang.reflect.Method.invokeNative(Native Method)
ERROR/AndroidRuntime(14981): at java.lang.reflect.Method.invoke(Method.java:521)
ERROR/AndroidRuntime(14981): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
ERROR/AndroidRuntime(14981): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
ERROR/AndroidRuntime(14981): at dalvik.system.NativeStart.main(Native Method)
ERROR/AndroidRuntime(14981): Caused by: java.lang.ClassCastException: com.app.newly.BackgroundService
ERROR/AndroidRuntime(14981): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2940)
ERROR/AndroidRuntime(14981): ... 10 more
caso ho rimosso StartService (nuovo Intent (questo, MyService.class)); da file java ho ottenuto l'errore di seguito:
ERROR/Web Console(4785): ReferenceError: Can't find variable: SqlitePlugin at file:///android_asset/www/BackgroundService.js:31
ERROR/Web Console(4785): TypeError: Result of expression 'window.plugins.SqlitePlugin' [undefined] is not an object. at file:///android_asset/www/index.html:26
altrimenti non posso in grado di eseguire l'applicazione sto ottenendo l'errore nel file.Am java ricevendo il segno di croce rossa (come 'X') nell'angolo sinistro di questa riga 'startService (new Intent (this, MyService.class));' per favore dimmi dove mi sbaglio, per favore guidami, grazie in anticipo.
sto ottenendo l'errore in service.when START I spostare il cursore sulla StartService sto ottenendo creare il metodo 'StartService (intenzione)'
e sto avendo il dubbio in questo plugin Posso grado per eseguire javascript in background o no.Se è possibile ottenere l'avviso in background.Per favore dimmi dove ho torto, per favore guidami, grazie in anticipo.
Sua Misericordia, siamo in grado di farlo funzionare? A caso puoi pubblicare un progetto di esempio per gli altri? – Henry