java - 如何在后台发生转换(ENTER&EXIT)cordova geofence插件时在后台调用PHP文件?
问题描述
我只想在后台发生转换(ENTER & EXIT)时调用位于服务器中的 php 文件。我阅读了科尔多瓦地理围栏插件文档,因为我需要创建 TransitionReceiver.java 文件来实现这一点。
我读了这个本 机实现
任何帮助
我尝试了以下代码:
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) {
}
}
}
谢谢
解决方案
如果您想更新插件的本机代码,您应该复制 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$ 不是抽象的,也不会覆盖抽象方法
您可以看到 doInBackground 方法是抽象的(此处是 Doc),并且您想从非抽象类中覆盖它。
我对本机开发不太满意,但我认为你的类PostLocationTask
必须是抽象的才能覆盖抽象方法
推荐阅读
- angular - Angular Spectator setInput - 如何传递对象
- python - 避免检查字符串是否包含的巨大 if elif 语句的最佳方法是什么
- android - 如何在其他 Android 手机上启用 ARCore
- python - python中2个日期之间的差异
- android - React Native:BLE,发现和广播(广告数据)
- javascript - JSON stringify 在有空格或非字母字符时创建下划线,为什么?
- gnuplot - gnuplot:如何避免使用填充曲线缩放到 0?
- c# - 将文件Linux服务器保存到Windows服务器时找不到路径c#的一部分
- mysql - My SQL 存储过程中的 ELSEIF 异常
- html - 如何更改 matInput 占位符的字体颜色