gpt4 book ai didi

java - 当转换发生时(进入和退出)cordova geofence插件在后台如何在后台调用PHP文件?

转载 作者:行者123 更新时间:2023-12-02 10:10:19 24 4
gpt4 key购买 nike

我想仅在后台发生转换(ENTER & EXIT)时调用位于服务器中的php文件。我读 cordova geofence 插件文档,我需要创建 TransitionReceiver.java 文件来实现此目的。

我读了这个native implementation

任何帮助

我尝试了以下代码:

package com.cowbell.cordova.geofence;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.os.AsyncTask;
import com.loopj.android.http.*;
import java.util.*;


public class TransitionReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
Logger.setLogger(new Logger(GeofencePlugin.TAG, context, false));
Logger logger = Logger.getLogger();

String error = intent.getStringExtra("error");

if (error != null) {
//handle error
logger.log(Log.DEBUG, error);
} else {
String geofencesJson = intent.getStringExtra("transitionData");
PostLocationTask task = new TransitionReceiver.PostLocationTask();
task.execute(geofencesJson);
}
}

private class PostLocationTask extends AsyncTask<String, Void, String> {

@Override
protected String doInBackground(String... geofencesJson) {
try {
AsyncHttpClient client = new AsyncHttpClient();
RequestParams data=new RequestParams();
params.put("key1","value1");
String url="someurl/xyz.php";
client.post(url,data, new AsyncHttpResponseHandler() {

public void onStart() {
super.onStart();
}

public void onSuccess(String response) {
}

public void onFailure(Throwable e, String response) {
}
});


} catch (Throwable e) {
Log.println(Log.ERROR, GeofencePlugin.TAG, "Exception posting
geofence: " + e);
}

return "Executed";
}

@Override
protected void onPostExecute(String result) {

}
}
}

谢谢

最佳答案

如果您想更新插件的 native 代码,您应该复制 git 存储库并在 config.xml 上使用您自己的克隆存储库

像这样:

<plugin name="name-of-plugin" spec="https://github.com/**yourrepositoryurl.git**" />

然后,您必须在 onReceive 函数中实现“ajax”调用。

您可以在这里找到一个示例:Call PHP function from android?

代码编辑后:

我认为问题是:

com.cowbell.cordova.geofence.TransitionReceiver$PostLocationTask$ is not abstract and does not override abstract method

您可以看到 doInBackground 方法是抽象的 ( Doc here ) 并且您想要从非抽象类重写它。

我对 native 开发不太满意,但我认为你的类 PostLocationTask 必须是抽象的,才能覆盖抽象方法

关于java - 当转换发生时(进入和退出)cordova geofence插件在后台如何在后台调用PHP文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55044912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com