2017-05-24 3 views
0

私のプロジェクトでは、recyclerView/cardViewという電話番号のチェックリストがあります。個々のグループを作成するには、電話番号/ビジネスをチェックボックスで追加または削除することができます。私は選択された個人にグループのマルチテキストを送ることができるようにしたい。Android SMSのマルチテキストグループ

私の問題は、グループ内の最初の電話番号(受信者)だけがメッセージを受信し、残りのメッセージは受信されませんが、数字は編集テキストに表示されます(最初は唯一の機能番号です)。

私はさまざまな方法を試しましたが、何も効果がありませんでした。私はあきらめようとしています。

誰もこの問題を解決する方法を知りません。この問題が解決できる場合は、教えてください。

数字とテキストを個別にループしたくないというのは、修正案です。

これは、携帯電話の活動である:

public class ACPhone extends AppCompatActivity { 

    private static final String SEPARATOR = ";"; 
    EditText txtPhoneNo; 
    EditText txtMessage; 
    TextView txtView; 
    Button btnsend; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_acphone); 

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     txtPhoneNo = (EditText) findViewById(R.id.txtPhoneNo); 
     txtMessage = (EditText) findViewById(R.id.txtMessage); 
     txtView = (TextView)findViewById(R.id.txtMessageMass); 
     btnsend = (Button) findViewById(R.id.btnSend); 

     Intent intent = getIntent(); 
     if (intent != null){ 

      ArrayList<CharSequence> selectedNumbers = 
      intent.getCharSequenceArrayListExtra(SELECTED_NUMBERS); 
      StringBuffer sb = new StringBuffer(); 
      for (int i = 0; i < selectedNumbers.size(); i++) { 
       sb.append(selectedNumbers.get(i)); 
       if (i != selectedNumbers.size() - 1){ 
        sb.append(SEPARATOR); 
      } 
     } 
     txtPhoneNo.setText(sb.toString()); 
    } 
    btnsend.setOnClickListener(new View.OnClickListener() { 

    @Override public void onClick(View v) { 

      String phoneNo = txtPhoneNo.getText().toString(); 
      String message = txtMessage.getText().toString(); 
      String messageView = txtView.getText().toString(); 

      if (phoneNo.length() > 0 && message.length() > 0) { 
       sendMessage(phoneNo, message, messageView); 
      } else { 

       Toast.makeText(getBaseContext(), "Please enter message", 
Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 
    } 

    private void sendMessage(String phoneNo,String message, String staticMessage){ 

     try { 
      SmsManager smsManager = SmsManager.getDefault(); 
      smsManager.sendTextMessage(phoneNo,null,message + "\n" + 
    staticMessage,null,null); 
      Toast.makeText(getApplicationContext(), "Message Sent", 
      Toast.LENGTH_SHORT).show(); 

      } 
     catch (Exception e){ 
       Toast.makeText(getApplicationContext(), "Unable to send. Please try again", Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 

答えて

0

あなたはすべての番号のリストを作成し、リストをループのために行う、あなたのonclickや方法にしてonclickの中でそれを呼び出すことができます。とにかくそれをやる方法です。

+0

選択した受信者のグループに対して1つのメッセージではなく、チェックされた各受信者に個別のメッセージを送信することを意味しますか? – SAmendariz

+0

はい。メッセージを同じままにして、番号を繰り返してください。 – Yousef

+0

は、それが動作しなかった後に、コードメントによって提案されました。私は本当に各人に個別にテキストを伝えたくありませんでした。私はそれが大量のテキストとしてできると思った。私はスタック上の誰かを見つけることができない場合、私は別のメンターを試みます。とにかくありがとう。 – SAmendariz

0

以下は、1つのメッセージを複数の連絡先にチェックする際に、1つのメッセージを送信するいくつかの手順です。

ステップ1:このようなあなたのMainActivity.class

public class MainActivity extends AppCompatActivity { 

ListView listView; 
EditText editMessage; 
ProgressDialog progressDialog; 
Handler progresshandler; 
boolean isThreadRunning; 
int i; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    listView = (ListView) findViewById(R.id.contactsView); 
    editMessage = (EditText) findViewById(R.id.editMessage); 

    listView.setAdapter(new ContactAdapter(this, contacts)); 

    progressDialog = new ProgressDialog(this); 
    progressDialog.setMessage("Sending Messages.. Please wait!"); 

    progresshandler = new Handler() { 
     public void handleMessage(Message msg) { 
      progressDialog.dismiss(); 
      Toast.makeText(MainActivity.this, "Messages Sent", 
        Toast.LENGTH_LONG).show(); 
     } 
    }; 
    } 

} 

ステップ2:このMainActivity.class内1つのクラスを作成します(onCreate()法の下に、このクラスを入れて)

class SendMessagesThread extends Thread { 
    Handler handler; 

    public SendMessagesThread(Handler handler) { 
     this.handler = handler; 
    } 

    public void run() { 
     SmsManager smsManager = SmsManager.getDefault(); 
     // Find out which contacts are selected 
     for (int i = 0; i < listView.getCount(); i++) { 
      View item = (View) listView.getChildAt(i); 
      boolean selected = ((CheckBox) item.findViewById(R.id.selected)).isChecked(); 
      if (selected) { 
       String mobile = ((TextView) item.findViewById(R.id.mobile)).getText().toString(); 
       try { 
        smsManager.sendTextMessage(mobile, null, editMessage.getText().toString(), null, null); 
       } catch (Exception ex) { 
        Log.d("Mobile", "Could not send message to " + mobile); 
       } 
      } 
     } 
     Message m = handler.obtainMessage(); 
     handler.sendMessage(m); 
    } // run 
} // Thread 

ステップ3: 1つのメソッドを作成する(このメソッドをステップ-2の下に配置)

public void sendMessages(View v) { 
    if (editMessage.getText().toString().length() > 0) { 
     SendMessagesThread thread = new SendMessagesThread(progresshandler); 
     thread.start(); 
     progressDialog.show(); 
    } else { 
     Toast.makeText(this, "Please enter message!", Toast.LENGTH_LONG) 
       .show(); 
    } 
} 

注:私のプロジェクトによると、私は、任意のSQLiteデータベースを使用していないか、webservice.Basicallyは、私は、デバイス接触ブックからすべての連絡先を取得し、リストビューにその連絡先を表示しています。だから、理解して修正してみてください。

+0

ありがとうございました。それはうまくいくが、私はまだ新しい連絡先をユーザーの連絡先リストに読み込まなければならない。私はそれを問題にすることができた。私は最も醜い解決策をとることに決めました。それは可愛いわけではないが、うまくいく(私は思う)。 – SAmendariz

0
public class TextActivity extends AppCompatActivity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    ArrayList<CharSequence> selectedNumbers 
=getIntent().getCharSequenceArrayListExtra(SELECTED_NUMBERS);; 

    String phNumbers = ""; 
    for (CharSequence s: selectedNumbers) { 
     phNumbers += s + ";"; 
    } 

//  for (int i = 0; i < selectedNumbers.size(); i++) { 
//   phNumbers += selectedNumbers.get(i); 
//   if (i != selectedNumbers.size()-1){ 
//    phNumbers += ";"; 
//   } 
//  } 

    phNumbers = phNumbers.substring(0, phNumbers.length() - 1); 
    String message = ""; 
    Intent smsIntent = new Intent(Intent.ACTION_VIEW); 
    smsIntent.setType("vnd.android-dir/mms-sms"); 
    smsIntent.putExtra("address", phNumbers); 
    smsIntent.putExtra("sms_body",message); 
    startActivity(smsIntent); 

} 
}