有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案