Android:getParams()两次调用不知道为什么?

时间:2014-03-19 08:32:50

标签: java android json

此处getParams()方法调用了两次,并在我的服务器上添加了两次数据。我也注意到我的日志在logcat中打印了两次。当我从联系人选择器列表视图中选中两个复选框以将数据发送到服务器时,就会发生这种情况。

这是我的json数据:

{
    "send_data":[{
    "gcm_reg_id":
    "APA91bFPfAvEL_UJRHiOSohkekTh7M9qj1Kj307kFqmWh4VS8Re1aeejWSKXQnJb7q3OIjykCccbbI-0pn14DwvyjjL4ynQTHNR-m1p3vxLKy7ujGXv2MpIe0fhT2vcTJE0SW0uTjkD9iPJz0pw3sMuGojA4yxw0zg", "receiver_id":
    "170"
    },{
    "gcm_reg_id":
    "APA91bFheDJdBe3LwBk7MNchLitnKkECgVARxopr0HnFemo1vfW3Q0Mt1m6GXxccoq-wjUwoV-yXOVvcw9JwXcOZwAPyal9ZqMoA-U3fLNdaMa7pu8f-GYSyMsv16XKkgzPpzOPPKs8pc9C-7K1MhZXKgRf67DiXTSRY67swIOGP1XmJyoa3l1s", "receiver_id":
    "166"
    }]
}

这是我的代码:

public class ContacsPicker extends ListActivity implements OnClickListener{
    ProgressDialog dialog;
    ConnectionDetector cd;
    String phoneNumber ;
    String conatct_num;
    ArrayList<integer> status;
    ImageView iv;
    ArrayList<PhoneContactInfo> list;
    JSONArray contact_noArray;
    ArrayList<String> contact_database;
    ArrayList<String> contact_userid;
    ArrayList<String> image;
    ListView list_view;
    CustomListViewAdapter adpter;
    String user_id,message,level,time,image_name,receiver_id,regId,mail;
    Bitmap send_image;
    Store_pref obj_Store_pref;
    RegisterUser obj_RegisterUser;
    ProgressDialog Dialog;
    EditText edt_search;
    ImageView iv_search;
    RelativeLayout relative_search;
    Boolean is_serch=false;
    Matrix matrix = new Matrix();
    send_data obj_Send_data;
    String sender_regid,ba1, data;
    Context mContext;
    public Uri targetUri;
    JSONObject obj;
    Button button1_send;
    ArrayList<String> checkedValue;
    ArrayList<send_data> id_arrArrayList;


    List<com.waycreon.picture_puzzle.model.RegisterUser.Registure_user> Registure_user;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_contacts_picker);

        mContext=this;
        edt_search =(EditText) findViewById(R.id.edt_search);
        iv_search=(ImageView)findViewById(R.id.iv_search);
        button1_send=(Button) findViewById(R.id.button1_send);
        button1_send.setOnClickListener(this);

        relative_search=(RelativeLayout)findViewById(R.id.relative_search);
        set_invisible_relative_search();
        obj_Store_pref=new Store_pref(ContacsPicker.this);

        regId=obj_Store_pref.get_GCMreg_id();
        mail=obj_Store_pref.get_mail_id();
        Log.i("GCM reg id in contact picker class", "++++"+regId);
        Log.i("mail id in contact picker class", "++++"+mail);


        iv_search.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                if(!is_serch)
                {
                    is_serch=true;
                    search_click();
                }
                else
                {
                    is_serch=false;
                    close_click();
                }
            }
        });


        list_view=getListView();

        message = getIntent().getStringExtra("message");
        level   = getIntent().getStringExtra("level");
        time     = getIntent().getStringExtra("time");
        targetUri= (Uri) getIntent().getParcelableExtra("targetUri");

        Log.i("get message", message);
        Log.i("get level", level);
        Log.i("get time", time);
        Log.i("get send_image", send_image+"=");
        Log.i("target uri", ""+targetUri);

        try {

            int orientation = getOrientation(this, targetUri);
            Log.i("orientation on create", "++"+orientation);
            matrix.postRotate(orientation);
            send_image = MediaStore.Images.Media.getBitmap(this.getContentResolver(), targetUri);
            send_image= get_Resized_Bitmap(send_image,600,800);

            ByteArrayOutputStream bao = new ByteArrayOutputStream();
            send_image.compress(Bitmap.CompressFormat.JPEG, 100, bao);
            byte [] ba = bao.toByteArray();
            ba1=Base64.encodeToString(ba,1);
            Log.i("base 64", ba1);


        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        status=new ArrayList<integer>();
        contact_database=new ArrayList<String>();
        contact_userid=new ArrayList<String>();
        image=new ArrayList<String>();
        cd=new ConnectionDetector(this);
        obj_Store_pref= new Store_pref(this);

        dialog = new ProgressDialog(ContacsPicker.this);
        dialog.setCancelable(false);
        dialog.setMessage("Please Wait...");
        dialog.setCancelable(false);


        list = getAllPhoneContacts();

        get_registered_no();

        edt_search = (EditText) findViewById(R.id.edt_search);

        edt_search .addTextChangedListener(new TextWatcher() {

            public void afterTextChanged(Editable arg0) {
                // TODO Auto-generated method stub
                String text = edt_search .getText().toString()
                        .toLowerCase(Locale.getDefault());
                adpter.filter(text);
                list_view.setAdapter(adpter);
                adpter.notifyDataSetChanged();
            }

            public void beforeTextChanged(CharSequence arg0, int arg1,
                                          int arg2, int arg3) {
                // TODO Auto-generated method stub
            }

            public void onTextChanged(CharSequence arg0, int arg1,
                                      int arg2, int arg3) {
                // TODO Auto-generated method stub
            }
        });



        id_arrArrayList=new ArrayList<send_data>();
        list_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            public void onItemClick(AdapterView<?> arg0, View arg1,int arg2, long arg3) {


                CheckBox cb = (CheckBox) arg1.findViewById(R.id.checkBox1_check);
                cb.performClick();


                receiver_id =arg1.getTag().toString();

                //              String gcm_reg_id=Registure_user.get(arg2).gcm_regid;
                //              Log.i("gcm_reg id on list click", gcm_reg_id);

                Log.i("in if", receiver_id+"++++");

                if(!arg1.getTag().equals("0"))
                {

                    String[] separated = arg1.getTag().toString().split(" ");
                    String receiver_id =separated[0];
                    String gcm_reg_id=separated[1];



                    if (cb.isChecked()) {
                        Log.i("in if check box", receiver_id+"++++");

                        obj_Send_data = new send_data();
                        obj_Send_data.setReceiver_id(receiver_id);
                        obj_Send_data.setGcm_reg_id(gcm_reg_id);
                        id_arrArrayList.add(obj_Send_data);
                        Log.i("arraylist in if lisze", "++"+ id_arrArrayList.size());

                    } else if (!cb.isChecked()) {

                        id_arrArrayList.remove(obj_Send_data);
                        Log.i("arraylist in else lisze", "++"+ id_arrArrayList.size());

                    }
                }

                //                  if(!arg1.getTag().equals("0"))
                //                  {
                //                      receiver_id =arg1.getTag().toString();
                //                      show_alert_invitation("Invitation","Are you sure you want to send puzzle to your friend ?");
                //                      
                //                      Log.i("in if ", receiver_id+"++++");
                //                      
                //                      Get_receiver_reg_id();
                //                      
                //                      
                //                  }
                //                  else
                //                  {
                //                      show_alert_unregister_user("Notification",getString(R.string.unregister_user_message));
                //                  }
            }
        });![enter image description here][1]

    }

    public void onClick(View v) {
        if(v==button1_send)
        {

            //          Log.i("array list", receiver_id);
            //          Send_data();
            show_alert_invitation("Invitation","Are you sure you want to send task to your friend ?");

        }
    }


    private void get_registered_no() {
        // TODO Auto-generated method stub
        if (cd.isConnectingToInternet())
        {
            dialog.show();
            RequestQueue queue = Volley.newRequestQueue(ContacsPicker.this);

            String url="http://karmamobichamps.com/Restaurant_app/puzzle/puzzle_app_services.php?do=get_registered_no";
            Log.i("url", url+"+++++++++++");

            StringRequest myReq = new StringRequest(Method.GET,url,
                    Get_Event_list_ReqSuccessListener(),
                    Get_Event_list_ReqErrorListener());
            queue.add(myReq);
        }
        else
        {
            cd.show_alert("no connection", "Please check with your internet Connection");
        }
    }

    private ErrorListener Get_Event_list_ReqErrorListener() {
        return new Response.ErrorListener() {
            public void onErrorResponse(VolleyError error) {
                dialog.dismiss();
                Log.i("Volly err", error.getLocalizedMessage()+"++++");
                error.printStackTrace();
            }
        };
    }

    private Listener<String> Get_Event_list_ReqSuccessListener() {
        return new Response.Listener<String>() {

            public void onResponse(String response) {
                dialog.dismiss();
                Log.i("registration data", response+"");
                try {
                    JSONObject jo=new JSONObject(response);
                    if(jo.getString("ResponseCode").equals("1"))
                    {
                        try
                        {
                            Gson gson = new GsonBuilder().create();
                            obj_RegisterUser= gson.fromJson(response, RegisterUser.class);
                            Registure_user=obj_RegisterUser.Registure_user;
                            Log.i("user size", Registure_user.size()+"--");
                        }
                        catch (Exception e) {
                            e.printStackTrace();
                        }
                    }

                } catch (JSONException e1) {
                    e1.printStackTrace();
                }

                for(int i=0;i<list.size();i++)
                {
                    image.add("0");
                }
                for(int i=0;i<list.size();i++)
                {
                    for(int j=0;j<Registure_user.size();j++)
                    {
                        String[] separated = Registure_user.get(j).mobile_no.split(" ");
                        String mobilenono = separated[separated.length-1];

                        String country_code = separated[0];
                        // String mobilenono=separated[1];
                        String mobile_no=country_code+mobilenono;

                        if(list.get(i).getcontactNumber().equals(mobilenono) || list.get(i).getcontactNumber().equals(mobile_no) ||(list.get(i).getcontactNumber().equals(Registure_user.get(j).mobile_no)) ||list.get(i).getcontactNumber().equals("0"+mobilenono)) {
                            image.set(i,Registure_user.get(j).id.toString()+" "+Registure_user.get(j).gcm_regid.toString());
                            Log.i("match", list.get(i).getcontactNumber()+"==");


                        }
                    }
                }
                adpter=new CustomListViewAdapter(ContacsPicker.this, list,Registure_user,image);
                list_view.setAdapter(adpter);
            }
        };
    }

    private void Send_data() {

        data=Write_json();
        Log.i("in send data method", data);
        Dialog=new ProgressDialog(this);
        Dialog.setTitle("sending..");
        Dialog.setCancelable(false);

        Dialog.show();

        RequestQueue queue = Volley.newRequestQueue(ContacsPicker.this);

        String url = null;

        url = "http://karmamobichamps.com/Restaurant_app/puzzle/send_multi_data.php" ;

        StringRequest myReq = new StringRequest(Method.POST,url,
                send_data_ReqSuccessListener(),
                send_data_ReqErrorListener())
        {
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<String, String>();


                //              HashMap<String, String> params = new HashMap<String, String>();
                //              {
                **params.put("data", data);
                params.put("image", ba1);
                params.put("sender_id", obj_Store_pref.get_user_id());
                params.put("message", message);
                params.put("level",level);
                params.put("time", time);
                params.put("status", "1");

                Log.i("data in params", data);
                Log.i("sender_id in params", obj_Store_pref.get_user_id());
                Log.i("level",level);
                Log.i("message in params", message);
                Log.i("time in params", time);
                Log.i("status in params", "1");**



                return params;
            };
        };





        queue.add(myReq);
    }

    private ErrorListener send_data_ReqErrorListener() {
        return new Response.ErrorListener() {
            public void onErrorResponse(VolleyError error) {
                Dialog.dismiss();
                Log.i("Volly err", error.getLocalizedMessage()+"++++");
                error.printStackTrace();
            }
        };
    }

    private Listener<String> send_data_ReqSuccessListener() {
        return new Response.Listener<String>() {

            public void onResponse(String response) {
                Dialog.dismiss();
                Log.i("registration data", response+"");

                try {
                    JSONObject jo=new JSONObject(response);
                    if (jo.getString("ResponseCode").equals("1")) {
                        finish();
                    }


                } catch (JSONException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                catch (Exception e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        };
    }


    private void send_to_web() {
        // TODO Auto-generated method stub
        final String URL = "http://karmamobichamps.com/Restaurant_app/puzzle/send_multi_data.php";
        // Post params to be sent to the server
        HashMap<String, String> params = new HashMap<String, String>();
        params.put("data", data);
        //      params.put("image", ba1);
        //      params.put("sender_id", obj_Store_pref.get_user_id());
        //      params.put("message", message);
        //      params.put("level",level);
        //      params.put("time", time);
        //      params.put("status", "1");

        JsonObjectRequest req = new JsonObjectRequest(URL, new JSONObject(params),
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            VolleyLog.v("Response:%n %s", response.toString(4));
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }


                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.e("Error: ", error.getMessage());
            }
        });
        ApplicationController.getInstance().addToRequestQueue(req);
    }



    private void show_alert_invitation(String title,String msg) {

        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
        alertDialogBuilder.setTitle(title)
                .setMessage(msg)
                .setCancelable(false)
                .setPositiveButton("Ok",new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,int id) {

                        //              new ImageUpload().execute();
                        Send_data();
                        //              send_to_web();
                        Log.i("bitmap width in contact picker", ""+send_image.getWidth());
                        Log.i("bitmap height in contact picker", ""+send_image.getHeight());
                        dialog.cancel();
                    }
                })
                .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub
                        dialog.cancel();
                    }
                });
        AlertDialog alertDialog = alertDialogBuilder.create();
        alertDialog.show();
    }

    private void show_alert_unregister_user(String title,String msg) {

        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
        alertDialogBuilder.setTitle(title)
                .setMessage(msg)
                .setCancelable(false)
                .setPositiveButton("Yes",new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,int id) {
                        dialog.cancel();
                        Intent i = new Intent(Intent.ACTION_SEND);
                        i.setType("text/plain");
                        i.putExtra(Intent.EXTRA_SUBJECT, "Swapatask");
                        String sAux = "\nHeyy use this amazing application i m using too...\n\n";
                        sAux = sAux + "https://play.google.com/store/apps/details?id=com.waycreon.picture_puzzle \n\n";
                        i.putExtra(Intent.EXTRA_TEXT, sAux);
                        startActivity(Intent.createChooser(i, "choose one"));
                    }
                })
                .setNegativeButton("Cancel",new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,int id) {
                        dialog.cancel();
                    }
                });
        AlertDialog alertDialog = alertDialogBuilder.create();
        alertDialog.show();
    }

    @Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        super.onBackPressed();
    }

    private void set_visible_relative_search() {
        relative_search.setVisibility(RelativeLayout.VISIBLE);
    }

    private void set_invisible_relative_search() {
        relative_search.setVisibility(RelativeLayout.GONE);
    }

    private void search_click() {
        iv_search.setImageResource(R.drawable.close);
        set_visible_relative_search();
        edt_search.setFocusable(true);
    }

    private void close_click() {
        iv_search.setImageResource(R.drawable.search_button);
        set_invisible_relative_search();
        edt_search.setText("");
    }
    /*============================get local to phone all contect===================================*/
    public ArrayList<PhoneContactInfo> getAllPhoneContacts() {
        Log.d("START","Getting all Contacts");
        ArrayList<PhoneContactInfo> arrContacts = new ArrayList<PhoneContactInfo>();
        PhoneContactInfo phoneContactInfo=null;
        Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
        Cursor cursor = getContentResolver().query(uri, new String[] {ContactsContract.CommonDataKinds.Phone.NUMBER,ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone._ID}, null, null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC");
        cursor.moveToFirst();
        while (cursor.isAfterLast() == false)
        {
            String contactNumber= cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            String contactName =  cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
            int phoneContactID = cursor.getInt(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID));

            if (contactNumber.length()>0)
            {
                phoneContactInfo = new PhoneContactInfo();
                phoneContactInfo.setphoneContactID(phoneContactID);
                phoneContactInfo.setcontactName(contactName);
                phoneContactInfo.setcontactNumber(contactNumber.replaceAll("\\s+",""));
                arrContacts.add(phoneContactInfo);
            }
            phoneContactInfo = null;
            cursor.moveToNext();
        }
        cursor.close();
        cursor = null;
        Log.d("END","Got all Contacts");
        return arrContacts;
    }


    private void Send_push() {
        //          Dialog.show();

        RequestQueue queue = Volley.newRequestQueue(ContacsPicker.this);

        String url = null;
        try {
            url = "http://karmamobichamps.com/Restaurant_app/puzzle/puzzle_app_services.php?do=Receive_Push_notification&gcm_regid="
                    +sender_regid+"&message="+URLEncoder.encode("You Have Received Swapatask Request", "UTF-8");

        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        Log.i("rgister url", url);



        StringRequest myReq = new StringRequest(Method.GET,url,
                Registration_ReqSuccessListener(),
                Registration_ReqErrorListener());

        queue.add(myReq);
    }

    private ErrorListener Registration_ReqErrorListener() {
        return new Response.ErrorListener() {
            public void onErrorResponse(VolleyError error) {
                //                  Dialog.dismiss();
                Log.i("Volly err", error.getLocalizedMessage()+"++++");
                error.printStackTrace();
            }
        };
    }

    private Listener<String> Registration_ReqSuccessListener() {
        return new Response.Listener<String>() {

            public void onResponse(String response) {
                //                  Dialog.dismiss();
                Log.i("registration data", response+"");

                //                       
            }
        };

    }


    public Bitmap get_Resized_Bitmap(Bitmap bmp, int newHeight, int newWidth) {
        int width = bmp.getWidth();
        int height = bmp.getHeight();
        float scaleWidth = ((float) newWidth) / width;
        float scaleHeight = ((float) newHeight) / height;
        // CREATE A MATRIX FOR THE MANIPULATION


        //              Matrix matrix = new Matrix();
        // RESIZE THE BIT MAP
        matrix.postScale(scaleWidth, scaleHeight);
        //              matrix.postRotate(90);
        // "RECREATE" THE NEW BITMAP
        Bitmap newBitmap = Bitmap.createBitmap(bmp, 0, 0, width, height, matrix, true);

        return newBitmap ;
    }

    public static int getOrientation(Context context, Uri photoUri) {
            /* it's on the external media. */
        Cursor cursor = context.getContentResolver().query(photoUri,
                new String[] { MediaStore.Images.ImageColumns.ORIENTATION }, null, null, null);

        if (cursor.getCount() != 1) {
            return -1;
        }

        cursor.moveToFirst();
        return cursor.getInt(0);
    }

    private String Write_json() {
        // TODO Auto-generated method stub
        Log.i("arraylist lisze in next button", "++"+ id_arrArrayList.size());

        obj = new JSONObject();
        JSONArray list1 = new JSONArray();
        try {
            for (int i = 0; i < id_arrArrayList.size(); i++) {

                String gcm_reg_id=Registure_user.get(i).gcm_regid;
                JSONObject jsonObject=new JSONObject();
                jsonObject.put("receiver_id", id_arrArrayList.get(i).getReceiver_id());
                jsonObject.put("gcm_reg_id", id_arrArrayList.get(i).getGcm_reg_id());

                Log.i("gcm_reg_id", gcm_reg_id);
                list1.put(jsonObject);
            }
            obj.put("send_data", list1);

        }catch (Exception e) {
            e.printStackTrace();
        }
        return obj.toString();
    }



    //  public class ImageUpload extends AsyncTask<String, String,String>
    //    {
    //        Bitmap bitmap;
    //        public ImageUpload() 
    //        {
    //            // TODO Auto-generated constructor stub
    ////            this.bitmap=bitmap;
    //        }
    //        @Override
    //        protected void onPreExecute() 
    //        {
    //          dialog.show();
    //            super.onPreExecute();
    //          
    //        }
    //        @Override
    //        protected String doInBackground(String... params) 
    //        {
    //            // TODO Auto-generated method stub
    //            try
    //            {   
    ////            ByteArrayOutputStream bao = new ByteArrayOutputStream();
    ////            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bao);
    ////            byte [] ba = bao.toByteArray();
    ////            String ba1=Base64.encodeToString(ba,1);
    //            Log.i("base 64", ba1);
    //            ArrayList<NameValuePair> nameValuePairs = new enter code hereArrayList<NameValuePair>();
    //            HttpClient httpclient = new DefaultHttpClient();
    //            HttpPost httppost = new HttpPost("http://karmamobichamps.com/Restaurant_app/puzzle/send_multi_data.php");
    //           Log.i("url", ""+httppost);
    //            nameValuePairs.add(new BasicNameValuePair("data", data));
    //            nameValuePairs.add(new BasicNameValuePair("image", ba1));
    //            nameValuePairs.add(new BasicNameValuePair("sende

2 个答案:

答案 0 :(得分:0)

要确定此问题的根源,您需要调试并查看调用getParams的路径。

您可以在getParams块中断点或者将堆栈跟踪打印到日志中,如下所示:

Throwable throwable = new IllegalArgumentException("Something"); throwable.printStackTrace();

答案 1 :(得分:0)

在添加请求到请求队列之前添加它

request.setRetryPolicy(new DefaultRetryPolicy(
               0,
               DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
               DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));