java syncronise_javascript – 如何在Android后台服务中运行cordova插件?

我正在开发

cordova移动应用程序。我想实现一个后台服务,做一些工作,如开放套接字连接syncronise本地数据库与远程的一个,并通知用户新的远程推送等。关键是我有这个代码在javascript中实现,但我想执行它我的背景。

我在网上搜索了一个cordova后台服务插件。

最好的一个我认为是red-folder,但它只是为了android,它不让我写在后台执行的javascript。但是只需在java和javascript之间交换json。

我已经阅读了一些有关后台服务的主题,这些都是我发现的有用的:

所以我开始编写cordova插件(主要是在android上)在后台执行JavaScript代码。我从后台服务创建了一个webview来执行javascript。当我执行正常的JavaScript时,这可以正常工作,但是当涉及到cordova插件js它失败,例如device.uuid设备为null。

这是java服务代码:

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);

}

更新

logcat中没有错误。

所以我试图在屏幕上写设备对象,这就是我所得到的:

document.write(JSON.stringify(window.device))

这是结果:

{ available : false,

plaform : null ,

version : null ,

uuid : null ,

cordova : null ,

model : null

}

我试图用cordovaWebView替换标准的webView但是给出了相同的结果。

//WebView wv = new WebView(this); Commented out

CordovaWebView wv = new CordovaWebView(this);

对这个问题有任何帮助吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值