挂起Javascript事件以触发另一个应用程序或建议

时间:2017-07-20 14:24:28

标签: javascript android cordova

我们有一个基于网络的jquery移动应用程序,用于记录用户的活动。这个应用程序目前使用时间很长,因此重新编写应用程序不是一个不幸的选择。

问题是我们正在尝试使用应用程序在某些点获取GPS位置..但是因为它在chrome的实例中运行,所以当手机是javascript时,javascript将无法正确记录锁定,或铬最小化。

因此,为了解决这个问题,我们正在使用Cordova编写Ionic App,以便在后台获取GPS坐标,无论浏览器的状态如何。

目前,这很有效。然而,问题是我们的javascript中存在某些事件需要与我们的GPS日志记录关联的特定“类型”。

我的问题是:如何从GPS背景离子/ cordova应用程序中实际挂接到CHROME中的这个javascript事件。

到目前为止我们尝试了什么:

  1. 通过Ionic / Cordova查找chrome localstorage并从计时器中读取该值。 这个问题是我们找不到localstorage / cache的位置。 从这个问题来看,它在这里说:

    /data/data/com.android.chrome/cache

  2. 但我们无法从Android上的离子应用程序或文件浏览器中找到/访问它 https://android.stackexchange.com/questions/85998/android-google-chrome-browser-cache-location

    1. 我们还寻找方法来挂钩javascript事件以触发其他应用程序中的内容,但我们也没有运气......
    2. 长篇大论道歉......很难解释。如果您对从Chrome到Ionic / Cordova的这种跨应用事件的替代方法有任何建议,我将非常有兴趣听取您的意见。

1 个答案:

答案 0 :(得分:0)

为了解决这个问题,我创建了一个'堆栈'我可以将一个对象推送到一个数组,该数组将由cordova应用程序使用executeScript获取,如下所示:

在inappbrowser网站:

var stackName = stackN1
function addEventToStack(numid, type) {
    var stackRow = { 'numb': numid, 'type': type};
    var stack = localGet(stackName); //localstorage
    if (!stack)
        stack = StackInit();
    stack.push(stackRow);
    localStore(stackName, stack);
    console.log('Added to stack ', stack);
    return 'Row Added';
}

在cordova申请中:

ref.executeScript(
            { 
                code: 'localStorage.getItem("stackN1")'
            }, 
            function(rdObj) { 
                  //Iterate and use rdObj here
    }