안드로이드 문자 그룹 발송 기능의 실현

10853 단어
인터넷이 발전함에 따라 실시간 통신이 점점 중요해지고 있다. 명절이면 친지들에게 축하 문자를 보내야 한다. 오늘은 안드로이드가 단체 문자를 어떻게 실현하는지 살펴본다.그러나 안드로이드 4.4에서 시스템의 기본 문자 앱을 시작해야 문자의 수법 기능을 갖추고, 만약 당신의 핸드폰이 4.4 이상의 시스템이라면 기본 문자 앱의 권한이 있어야만 문자의 발송 기능을 사용할 수 있다.
실현된 프로그램은 어렵지 않다. 프로그램은 목록이 있는 대화상자를 제공하여 사용자가 문자를 보낼 대상, 즉 받는 사람의 전화번호를 선택할 수 있도록 한다.
    //            
    ArrayList<String> sendList = new ArrayList<String>();

SmsManager를 사용하여 각 전화 번호에 대해 문자를 순차적으로 보냅니다.
for (String number : sendList)
                {
                    //     PendingIntent  
                    PendingIntent pi = PendingIntent.getActivity(
                            MainActivity.this, 0, new Intent(), 0);
                    //     
                    sManager.sendTextMessage(number, null, content
                            .getText().toString(), pi, null);
                }
                //         

다음은 소스 코드입니다.
public class MainActivity extends Activity
{
    EditText numbers, content;
    Button select, send;
    SmsManager sManager;
    //            
    ArrayList sendList = new ArrayList();
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        sManager = SmsManager.getDefault();
        //          、    
        numbers = (EditText) findViewById(R.id.numbers);
        content = (EditText) findViewById(R.id.content);
        select = (Button) findViewById(R.id.select);
        send = (Button) findViewById(R.id.send);
        //  send            
        send.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                for (String number : sendList)
                {
                    //     PendingIntent  
                    PendingIntent pi = PendingIntent.getActivity(
                            MainActivity.this, 0, new Intent(), 0);
                    //     
                    sManager.sendTextMessage(number, null, content
                            .getText().toString(), pi, null);
                }
                //         
                Toast.makeText(MainActivity.this, "      "
                        , Toast.LENGTH_SHORT).show();
            }
        });
        //  select            
        select.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                //           
                final Cursor cursor = getContentResolver().query(
                        ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                        null, null, null, null);
                BaseAdapter adapter = new BaseAdapter()
                {
                    @Override
                    public int getCount()
                    {
                        return cursor.getCount();
                    }
                    @Override
                    public Object getItem(int position)
                    {
                        return position;
                    }
                    @Override
                    public long getItemId(int position)
                    {
                        return position;
                    }
                    @Override
                    public View getView(int position, View convertView,
                                        ViewGroup parent)
                    {
                        cursor.moveToPosition(position);
                        CheckBox rb = new CheckBox(MainActivity.this);
                        //           ,         、  
                        String number = cursor
                                .getString(cursor.getColumnIndex(ContactsContract
                                        .CommonDataKinds.Phone.NUMBER))
                                .replace("-", "")
                                .replace(" " , "");
                        rb.setText(number);
                        //                ,       
                        if (isChecked(number))
                        {
                            rb.setChecked(true);
                        }
                        return rb;
                    }
                };
                //   list.xml       View
                View selectView = getLayoutInflater().inflate(
                        R.layout.list, null);
                //   selectView    list ListView  
                final ListView listView = (ListView) selectView
                        .findViewById(R.id.list);
                listView.setAdapter(adapter);
                new AlertDialog.Builder(MainActivity.this)
                        .setView(selectView)
                        .setPositiveButton("  ",
                                new DialogInterface.OnClickListener()
                                {
                                    @Override
                                    public void onClick(DialogInterface dialog,
                                                        int which)
                                    {
                                        //   sendList  
                                        sendList.clear();
                                        //   listView        
                                        for (int i = 0; i < listView.getCount(); i++)
                                        {
                                            CheckBox checkBox = (CheckBox) listView
                                                    .getChildAt(i);
                                            //          
                                            if (checkBox.isChecked())
                                            {
                                                //            
                                                sendList.add(checkBox.getText()
                                                        .toString());
                                            }
                                        }
                                        numbers.setText(sendList.toString());
                                    }
                                }).show();
            }
        });
    }
    //                  
    public boolean isChecked(String phone)
    {
        for (String s1 : sendList)
        {
            if (s1.equals(phone))
            {
                return true;
            }
        }
        return false;
    }
}

그러나 연락처를 너무 많이 보내면 심각한 네트워크 지연이 발생할 위험이 있다.
저자: 송뢰
https://blog.csdn.net/weixin_40599987/article/details/80697682
미친 안드로이드 개발

좋은 웹페이지 즐겨찾기