This question is locked. New answers and comments are not allowed.
I am working on mobile application developed on [cordova][1] . I want to implement a background service that do some work like open socket connection syncronise local database with remote one and notify the users on new remote pushes etc . The point is I have this code implemented in javascript but I want execute it i background.
I searched internet for a cordova background service plugin.
- katzer/cordova-plugin-background-mode
- jocull/phonegap-backgroundjs
- [red-folder]
The best one I think is [red-folder] but it is just for android and it does not let me to write javascript to be executed in background. but just exchange json between java and javascript.
I have read some topics about background service in android these are useful ones I found:
- [create-a-service-on-android-with-phonegap-application]
- [simple-android-service-example-code-description-start-stop-service]
- [android-using-webview-outside-an-activity-context]
So I started writing cordova plugin (primarily on android) to execute the javascript code in background. I created a webview from the background service to execute the javascript from it. This works fine when I execute normal javascript but when it comes to cordova plugins js it fails for example the device `device.uuid` gives `null`.
This is the java service code:
There is no error in the logcat.
So I tried to write the device object on the screen and that's what I get :
And this is the result :
{ available : false,
plaform : null ,
version : null ,
uuid : null ,
cordova : null ,
model : null
}
Any help about this problem ?
I searched internet for a cordova background service plugin.
- katzer/cordova-plugin-background-mode
- jocull/phonegap-backgroundjs
- [red-folder]
The best one I think is [red-folder] but it is just for android and it does not let me to write javascript to be executed in background. but just exchange json between java and javascript.
I have read some topics about background service in android these are useful ones I found:
- [create-a-service-on-android-with-phonegap-application]
- [simple-android-service-example-code-description-start-stop-service]
- [android-using-webview-outside-an-activity-context]
So I started writing cordova plugin (primarily on android) to execute the javascript code in background. I created a webview from the background service to execute the javascript from it. This works fine when I execute normal javascript but when it comes to cordova plugins js it fails for example the device `device.uuid` gives `null`.
This is the java service code:
public
void
onStart(Intent intent,
int
startId) {
Toast.makeText(
this
,
"My Happy Service Started"
, Toast.LENGTH_LONG).show();
createBackGroundView();
super.onStart(intent,startId);
}
public
void
createBackGroundView(){
WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
LayoutParams
params
=
new
WindowManager.LayoutParams(
android.view.ViewGroup.LayoutParams.WRAP_CONTENT,
android.view.ViewGroup.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
PixelFormat.TRANSLUCENT
);
params
.gravity = Gravity.TOP | Gravity.LEFT;
params
.x = 0;
params
.y = 0;
params
.width = 200;
params
.height = 200;
LinearLayout view =
new
LinearLayout(
this
);
view.setLayoutParams(
new
RelativeLayout.LayoutParams(
android.view.ViewGroup.LayoutParams.MATCH_PARENT,
android.view.ViewGroup.LayoutParams.MATCH_PARENT
));
WebView wv =
new
WebView(
this
);
wv.setLayoutParams(
new
LinearLayout.LayoutParams(
android.view.ViewGroup.LayoutParams.MATCH_PARENT,
android.view.ViewGroup.LayoutParams.MATCH_PARENT
));
view.addView(wv);
wv.getSettings().setJavaScriptEnabled(
true
);
wv.setWebChromeClient(
new
WebChromeClient());
wv.loadUrl(
"file:///android_asset/www/background.html"
);
wv.setWebViewClient(
new
WebViewClient() {
@Override
public
void
onReceivedError(final WebView view,
int
errorCode,
String description, final String failingUrl) {
Log.d(
"Error"
,
"loading web view"
);
super.onReceivedError(view, errorCode, description, failingUrl);
}
});
windowManager.addView(view,
params
);
}
There is no error in the logcat.
So I tried to write the device object on the screen and that's what I get :
document.write(JSON.stringify(window.device))
And this is the result :
{ available : false,
plaform : null ,
version : null ,
uuid : null ,
cordova : null ,
model : null
}
Any help about this problem ?