java广播接收器建议
我当前的项目方法只能在移动数据打开时与远程数据库连接同步。这次我如何使用wifi实现同样的功能?我将添加什么代码使其在Wifi和移动数据上工作
这是我的广播接收器
public class NetworkMonitor extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
if (checkNetworkConnection(context))
{
final DbHelper dbHelper = new DbHelper(context);
final SQLiteDatabase database = dbHelper.getWritableDatabase();
Cursor cursor = dbHelper.readFromLocalDatabase(database);
while (cursor.moveToNext())
{
int sync_status = cursor.getInt(cursor.getColumnIndex(DBContract.SYNC_STATUS));
if (sync_status == DBContract.SYNC_STATUS_FAILED)
{
final String Name = cursor.getString(cursor.getColumnIndex(DBContract.NAME));
StringRequest stringRequest = new StringRequest(Request.Method.POST, DBContract.SERVER_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
String Response = jsonObject.getString("response");
if (Response.equals("OK"))
{
dbHelper.updateLocalDatabase(Name,DBContract.SYNC_STATUS_OK,database);
context.sendBroadcast(new Intent(DBContract.UI_UPDATE_BROADCAST));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
})
{
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("name",Name);
return params;
}
}
;
MySingleton.getInstance(context).addToRequestQue(stringRequest);
}
}
}
}
`
public boolean checkNetworkConnection(Context context)
{
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
return (networkInfo!= null && networkInfo.isConnected());
}
我想做的是,当移动数据被关闭并插入一条记录时,它会被保存到本地sqlite。当我打开移动数据时,它会自动将记录上传到远程mysql数据库。但当我在WiFi上做同样的事情时。当我关闭并打开它时,它不会自动将记录发送到远程mysql数据库
共 (0) 个答案