Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PendingEvent在android中发送多号码短信?_Android_Android Pendingintent_Sms Gateway - Fatal编程技术网

如何使用PendingEvent在android中发送多号码短信?

如何使用PendingEvent在android中发送多号码短信?,android,android-pendingintent,sms-gateway,Android,Android Pendingintent,Sms Gateway,我在我的源代码中有问题,当我发短信时,我只需要发送ID相同的报告,这是最后发送的号码 String SENT = "SMS_SENT"; String DELIVERED = "SMS_DELIVERED"; PendingIntent sentPI; PendingIntent deliverPI; try { JSONObject json = new JSONObject(content); status = json.ge

我在我的源代码中有问题,当我发短信时,我只需要发送ID相同的报告,这是最后发送的号码

String SENT = "SMS_SENT";
    String DELIVERED = "SMS_DELIVERED";
    PendingIntent sentPI;
    PendingIntent deliverPI;

    try {
        JSONObject json = new JSONObject(content);
        status = json.getString("status");
        message = json.getString("message");
        pesan = json.getString("pesan");
        contacts = json.getJSONArray("contacts");   
        Log.i("INFO","status " + status + ", message " + message + ", pesan "+ pesan + " , jml contacts " + contacts.length());

        for (int i = 0; i < contacts.length(); i++) {
            JSONObject datauser = contacts.getJSONObject(i);
            Log.i("INFO", "no :" + (i + 1) + " " + datauser.getString(NO));

        }

        Intent sendinten = new Intent(SENT);
        Intent deliverIntent = new Intent(DELIVERED);

        SmsManager sms = SmsManager.getDefault();
        int[] id_recever = new Gson().fromJson(id_message, int[].class);

        for (int i = 0; i < id_recever.length; i++) {
            JSONObject datauser = contacts.getJSONObject(i);
            String id = String.valueOf(id_recever[i]);

            Log.i("INFO", "ID message " + id);
            deliverIntent.putExtra("id_send", id);

            deliverPI = PendingIntent.getBroadcast(getBaseContext(), 0,deliverIntent, PendingIntent.FLAG_UPDATE_CURRENT);
            sentPI = PendingIntent.getBroadcast(getBaseContext(), 0,sendinten, PendingIntent.FLAG_UPDATE_CURRENT);
            sms.sendTextMessage(datauser.getString(NO), null, pesan,sentPI, deliverPI);
        }
    } catch (Exception e) {
        e.printStackTrace();
        Log.d("DATA", "GAGAL");
    }
//-----------短信传递-----------//


您需要确保您的
pendingent
s都是唯一的。由于您总是在传递给
createBroadcast()
Intent
中提供相同的操作,因此您总是返回相同的
pendingent

每次调用
createBroadcast()
时,请尝试将
requestCode
参数设置为唯一值,如下所示(假设您的
id
参数是唯一的):


这里,对于deliveryPI和sentPi,最后一个参数0表示哪个标志值?@yousuf如果最后一个参数0表示未设置标志。
    registerReceiver(new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {

            switch (getResultCode()) {
            case Activity.RESULT_OK:
                Toast.makeText(getBaseContext(), "SMS send",Toast.LENGTH_SHORT).show();
                Log.i("INFO", "SMS SEND");
                break;
            case SmsManager.RESULT_ERROR_GENERIC_FAILURE:// no salah
                Toast.makeText(getBaseContext(), "Generic failure",Toast.LENGTH_SHORT).show();
                break;
            case SmsManager.RESULT_ERROR_NO_SERVICE: // didn't get service
                                                        // provider
                Toast.makeText(getBaseContext(), "No service",
                        Toast.LENGTH_SHORT).show();
                break;
            case SmsManager.RESULT_ERROR_NULL_PDU: //
                Toast.makeText(getBaseContext(), "Null PDU",
                        Toast.LENGTH_SHORT).show();
                break;
            case SmsManager.RESULT_ERROR_RADIO_OFF: // mode airplane
                Toast.makeText(getBaseContext(), "Radio off",
                        Toast.LENGTH_SHORT).show();
                break;
            }

        }
    }, new IntentFilter(SENT));
    registerReceiver(new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            String id_message_send = intent.getStringExtra("id_send");
            switch (getResultCode()) {
            case Activity.RESULT_OK:
                Log.i("INFO", "SMS Delivered " + id_message_send);
                AsyncHttpClient postId = new AsyncHttpClient();
                RequestParams id = new RequestParams();
                id.put("id_message_send", id_message_send);

                postId.post(URL_UPDATE, id, new AsyncHttpResponseHandler() {
                    @Override
                    public void onStart() {
                        // TODO Auto-generated method stub
                        super.onStart();
                    }

                    @Override
                    public void onSuccess(int arg0, String response) {
                        Log.i("INFO", "Response Server " + response);
                        super.onSuccess(arg0, response);
                    }

                });
                break;
            case Activity.RESULT_CANCELED:
                Log.i("INFO", "SMS NOT Deliver");
                break;
            }

        }
    }, new IntentFilter(DELIVERED));

}
deliverPI = PendingIntent.getBroadcast(getBaseContext(), id, deliverIntent, 0);
sentPI = PendingIntent.getBroadcast(getBaseContext(), id, sendinten, 0);