如何从联系人列表中选择更多联系人以发送短信

时间:2013-06-07 11:09:15

标签: java android sms

现在我只能从手机中的联系人中选择一个联系人,我想在我的联系人列表中发送短信,我该怎么发送。

现在我无法在手机中添加更多联系人,即使手动也可以编辑文本,也可以从联系人列表中获取。

我想在联系人列表中发送更多联系电话号码以发送短信。我能做什么

public class SendSMSActivity extends Activity {
Button buttonSend,get;
private static final int CONTACT_PICKER_RESULT = 1001;
EditText phoneNo;
EditText textSMS;
int columnIndex_number;
static String stringNumber;
String sms;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.about);
    phoneNo = (EditText)findViewById(R.id.editText1);
    textSMS = (EditText) findViewById(R.id.editText2);
    get = (Button) findViewById(R.id.button1);
    get.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
             Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,
                    Contacts.CONTENT_URI);
            startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT);


        }
        });

    Intent intent1= getIntent(); // gets the previously created intent
    final String firstKeyName = intent1.getStringExtra("firstKeyName");


    textSMS.setText(firstKeyName);

    buttonSend = (Button) findViewById(R.id.button2);    
    buttonSend.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v){
          try {

              String sms =  textSMS.getText().toString().trim();
                Toast.makeText(getApplicationContext(), phoneNo.getText().toString()+firstKeyName,
                        Toast.LENGTH_LONG).show();
            SmsManager smsManager = SmsManager.getDefault();
            smsManager.sendTextMessage(phoneNo.getText().toString(), null, firstKeyName, null, null);
            Toast.makeText(getApplicationContext(), "SMS Sent!",
                        Toast.LENGTH_LONG).show();

          } catch (Exception e) {
            Toast.makeText(getApplicationContext(),
                "SMS faild, please try again later!",
                Toast.LENGTH_LONG).show();
            e.printStackTrace();
          }
          finish();


        }
    });
}

 @Override  
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
 if (resultCode == RESULT_OK) {  
    switch (requestCode) {  
    case CONTACT_PICKER_RESULT:

        Cursor cursor = null;  
        String phoneNumber = "";
        List<String> allNumbers = new ArrayList<String>();
        int phoneIdx = 0;
        try {  
            Uri result = data.getData();  
            String id = result.getLastPathSegment();  
            cursor = getContentResolver().query(Phone.CONTENT_URI, null, Phone.CONTACT_ID + "=?", new String[] { id }, null);  
            phoneIdx = cursor.getColumnIndex(Phone.DATA);
            if (cursor.moveToFirst()) {
                while (cursor.isAfterLast() == false) {
                    phoneNumber = cursor.getString(phoneIdx);
                    allNumbers.add(phoneNumber);
                    phoneNo.setText(cursor.getString(phoneIdx));

                    cursor.moveToNext();
                }
            } else {
                //no results actions
            }  
        } catch (Exception e) {  
           //error actions
        } finally {  
            if (cursor != null) {  
                cursor.close();
            } 
        }  
        break;  
    }  
} else {
   //activity result error actions
}  
}
}

Logcaterror显示:

06-07 14:06:05.546: E/AndroidRuntime(780): FATAL EXCEPTION: main
06-07 14:06:05.546: E/AndroidRuntime(780): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.jsonandroid/com.example.jsonandroid.ContactActivity}; have you declared this activity in your AndroidManifest.xml?
06-07 14:06:05.546: E/AndroidRuntime(780):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1618)
06-07 14:06:05.546: E/AndroidRuntime(780):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417)
06-07 14:06:05.546: E/AndroidRuntime(780):  at android.app.Activity.startActivityForResult(Activity.java:3370)
06-07 14:06:05.546: E/AndroidRuntime(780):  at android.app.Activity.startActivityForResult(Activity.java:3331)
06-07 14:06:05.546: E/AndroidRuntime(780):  at com.example.jsonandroid.SendSMSActivity$1.onClick(SendSMSActivity.java:42)
06-07 14:06:05.546: E/AndroidRuntime(780):  at android.view.View.performClick(View.java:4202)
06-07 14:06:05.546: E/AndroidRuntime(780):  at android.view.View$PerformClick.run(View.java:17340)
06-07 14:06:05.546: E/AndroidRuntime(780):  at android.os.Handler.handleCallback(Handler.java:725)
06-07 14:06:05.546: E/AndroidRuntime(780):  at android.os.Handler.dispatchMessage(Handler.java:92)
06-07 14:06:05.546: E/AndroidRuntime(780):  at android.os.Looper.loop(Looper.java:137)
06-07 14:06:05.546: E/AndroidRuntime(780):  at android.app.ActivityThread.main(ActivityThread.java:5039)
06-07 14:06:05.546: E/AndroidRuntime(780):  at java.lang.reflect.Method.invokeNative(Native Method)
06-07 14:06:05.546: E/AndroidRuntime(780):  at java.lang.reflect.Method.invoke(Method.java:511)
06-07 14:06:05.546: E/AndroidRuntime(780):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
06-07 14:06:05.546: E/AndroidRuntime(780):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
06-07 14:06:05.546: E/AndroidRuntime(780):  at dalvik.system.NativeStart.main(Native Method)

1 个答案:

答案 0 :(得分:2)

您可以从联系人列表中获取所有联系人,并将其显示在列表中。您可以使用复选框选择联系人,然后单击按钮。导航到SendMessage活动并键入短信内容并发送消息

我认为有更好的方法来处理复选框。对于复选框,请按照以下链接获取所选项目。

https://groups.google.com/forum/?fromgroups#!topic/android-developers/No0LrgJ6q2M

您还可以获取您只需要的列。下面提取所有不好的列。

  Cursor phones = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);

get.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<ListView
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_above="@+id/button1"
   android:id="@+id/lv"/>
 <Button
     android:id="@+id/button1"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentBottom="true"
     android:layout_alignParentLeft="true"
     android:layout_marginLeft="44dp"
     android:text="Send" />

 </RelativeLayout>

MainActivity.java

公共类MainActivity扩展了Activity实现OnItemClickListener {

ArrayList<String> name1 = new ArrayList<String>();
ArrayList<String> phno1 = new ArrayList<String>();
ArrayList<String> phno0 = new ArrayList<String>();
MyAdapter ma ;
Button show,add;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    setContentView(R.layout.get);
    getAllCallLogs(this.getContentResolver());
    ListView lv= (ListView) findViewById(R.id.lv);
     ma = new MyAdapter();
    lv.setAdapter(ma);
    lv.setOnItemClickListener(this); 
    lv.setItemsCanFocus(false);
    lv.setTextFilterEnabled(true);
    // adding
    add = (Button) findViewById(R.id.button1);
    add.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View v) {
              StringBuilder checkedcontacts= new StringBuilder();
            System.out.println(".............."+ma.mCheckStates.size());
            for(int i = 0; i < name1.size(); i++)

                {
                if(ma.mCheckStates.get(i)==true)
                {
                      phno0.add(phno1.get(i).toString()) ;
                     checkedcontacts.append(name1.get(i).toString());
                     checkedcontacts.append("\n");

                }
                else
                {
           System.out.println("..Not Checked......"+name1.get(i).toString());
                }


            }
                Toast.makeText(MainActivity.this, checkedcontacts,1000).show();
                Intent intent = new Intent(new Intent(MainActivity.this,SendMessage.class));
                intent.putStringArrayListExtra("name",phno0);
                startActivity(intent); 

        }       
    });


}

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    // TODO Auto-generated method stub
     ma.toggle(arg2);
}

public  void getAllCallLogs(ContentResolver cr) {

    Cursor phones = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
    while (phones.moveToNext())
    {
      String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
      String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
      System.out.println(".................."+phoneNumber); 
      name1.add(name);
      phno1.add(phoneNumber);
    }

    phones.close();
 }
class MyAdapter extends BaseAdapter implements CompoundButton.OnCheckedChangeListener
{  private SparseBooleanArray mCheckStates;
   LayoutInflater mInflater;
    TextView tv1,tv;
    CheckBox cb;
    MyAdapter()
    {
        mCheckStates = new SparseBooleanArray(name1.size());
        mInflater = (LayoutInflater)MainActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return name1.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub

        return 0;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View vi=convertView;
        if(convertView==null)
         vi = mInflater.inflate(R.layout.row, null); 
         TextView tv= (TextView) vi.findViewById(R.id.textView1);
         tv1= (TextView) vi.findViewById(R.id.textView2);
         cb = (CheckBox) vi.findViewById(R.id.checkBox1);
         tv.setText("Name :"+ name1.get(position));
         tv1.setText("Phone No :"+ phno1.get(position));
         cb.setTag(position);
         cb.setChecked(mCheckStates.get(position, false));
         cb.setOnCheckedChangeListener(this);

        return vi;
    }
     public boolean isChecked(int position) {
            return mCheckStates.get(position, false);
        }

        public void setChecked(int position, boolean isChecked) {
            mCheckStates.put(position, isChecked);
        }

        public void toggle(int position) {
            setChecked(position, !isChecked(position));
        }
    @Override
    public void onCheckedChanged(CompoundButton buttonView,
            boolean isChecked) {
        // TODO Auto-generated method stub

         mCheckStates.put((Integer) buttonView.getTag(), isChecked);                 
    }       
}   
}

SendMessage.java

   public class SendMessage extends Activity {

EditText ed1,ed2;
ArrayList<String> sendlist = new ArrayList<String>();
Button b1;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sendmessage);
    ed1= (EditText)findViewById(R.id.editText1);
    ed2= (EditText)findViewById(R.id.editText2);
    Bundle extras = getIntent().getExtras();
    if(extras!=null)
    {
        sendlist = extras.getStringArrayList("name");
        if(sendlist!=null)
        {
        for(int i=0;i<sendlist.size();i++)
        {
            ed1.append(sendlist.get(i).toString());
            ed1.append(";");
        }
    }
    }
    else
    {
        Toast.makeText(getApplicationContext(), "null",
                Toast.LENGTH_LONG).show();
    }
    b1 = (Button) findViewById(R.id.button1);
    b1.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            for(int i=0;i<sendlist.size();i++)
            {

                if(ed2.getText().length()>0)
                {
                  try {
                        SmsManager smsManager = SmsManager.getDefault();

                        smsManager.sendTextMessage(sendlist.get(i).toString(), null, ed2.getText().toString(), null, null);

                        Toast.makeText(getApplicationContext(), "SMS Sent!",
                                    Toast.LENGTH_LONG).show();
                      } catch (Exception e) {
                        Toast.makeText(getApplicationContext(),
                            "SMS faild, please try again later!",
                            Toast.LENGTH_LONG).show();
                        e.printStackTrace();
                      }
                }
            }

        }

    });
}   
}

sendmessage.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="18dp"
    android:ems="10" >

    <requestFocus />
</EditText>

<EditText
    android:id="@+id/editText2"
    android:layout_width="wrap_content"
    android:layout_height="200dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/editText1"
    android:layout_marginTop="62dp"
    android:ems="10" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/editText1"
    android:layout_centerHorizontal="true"
    android:text="Phone Numbers" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/editText1"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="37dp"
    android:text="Message" />

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/textView2"
    android:layout_alignParentBottom="true"
    android:text="Send" />

</RelativeLayout>

您需要添加这两个权限

 <uses-permission android:name="android.permission.READ_CONTACTS"/>
 <uses-permission android:name="android.permission.SEND_SMS" />

编辑:

首先打开SendMessage活动。单击editext1旁边的“获取”按钮。导航到MainActivity,显示所有联系人,并使用复选框进行选择。点击发送将完成活动和重新调整短信活动。您可以在editext 1中看到所选的联系人。其余的都是相同的。

我已经将startActivity用于结果。这比我能帮到你做的更多。请相应地修改相同的内容。

  public class SendMessage extends Activity {

EditText ed1,ed2;
static int ResultCode= 12;
ArrayList<String> sendlist = new ArrayList<String>();
Button b1,b2;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sendmessage);
    b2 = (Button) findViewById(R.id.button2);
    ed1= (EditText)findViewById(R.id.editText1);
    ed2= (EditText)findViewById(R.id.editText2);
    b1 = (Button) findViewById(R.id.button1);
    b2.setOnClickListener(new OnClickListener()
     {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Intent i = new Intent(SendMessage.this, MainActivity.class);
        startActivityForResult(i, ResultCode);
    }

 });

    b1.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            for(int i=0;i<sendlist.size();i++)
            {

                if(ed2.getText().length()>0)
                {
                  try {
                        SmsManager smsManager = SmsManager.getDefault();

                        smsManager.sendTextMessage(sendlist.get(i).toString(), null, ed2.getText().toString(), null, null);

                        Toast.makeText(getApplicationContext(), "SMS Sent!",
                                    Toast.LENGTH_LONG).show();
                      } catch (Exception e) {
                        Toast.makeText(getApplicationContext(),
                            "SMS faild, please try again later!",
                            Toast.LENGTH_LONG).show();
                        e.printStackTrace();
                      }
                }
            }

        }

    });
}


protected void onActivityResult(int requestCode, int resultCode, Intent data) {

      if (requestCode == ResultCode) {

         if(resultCode == RESULT_OK){      
             sendlist  =data.getStringArrayListExtra("name");
             if(sendlist!=null)
                {
                for(int i=0;i<sendlist.size();i++)
                {
                    ed1.append(sendlist.get(i).toString());
                    ed1.append(";");
                }

         }
         if (resultCode == RESULT_CANCELED) {    

         }
      }
    }
}
}

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="18dp"
    android:ems="10" >

    <requestFocus />
</EditText>

<EditText
    android:id="@+id/editText2"
    android:layout_width="wrap_content"
    android:layout_height="200dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/editText1"
    android:layout_marginTop="62dp"
    android:ems="10" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/editText1"
    android:layout_centerHorizontal="true"
    android:text="Phone Numbers" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/editText1"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="37dp"
    android:text="Message" />

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/textView2"
    android:layout_alignParentBottom="true"
    android:text="Send" />

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/textView2"
    android:layout_alignBottom="@+id/textView2"
    android:layout_alignParentRight="true"
    android:text="Get" />

 </RelativeLayout>

MainActivity

    public class MainActivity extends Activity implements OnItemClickListener{


ArrayList<String> name1 = new ArrayList<String>();
ArrayList<String> phno1 = new ArrayList<String>();
ArrayList<String> phno0 = new ArrayList<String>();
MyAdapter ma ;
Button send;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    setContentView(R.layout.get);
    getAllCallLogs(this.getContentResolver());
    ListView lv= (ListView) findViewById(R.id.lv);
     ma = new MyAdapter();
    lv.setAdapter(ma);
    lv.setOnItemClickListener(this); 
    lv.setItemsCanFocus(false);
    lv.setTextFilterEnabled(true);
    send = (Button) findViewById(R.id.button1);
    send.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View v) {
              StringBuilder checkedcontacts= new StringBuilder();
            System.out.println(".............."+ma.mCheckStates.size());
            for(int i = 0; i < name1.size(); i++)

                {
                if(ma.mCheckStates.get(i)==true)
                {
                      phno0.add(phno1.get(i).toString()) ;
                     checkedcontacts.append(name1.get(i).toString());
                     checkedcontacts.append("\n");

                }
                else
                {
                    System.out.println("..Not Checked......"+name1.get(i).toString());
                }


            }
                Toast.makeText(MainActivity.this, checkedcontacts,1000).show();
                Intent returnIntent = new Intent();
                 returnIntent.putStringArrayListExtra("name",phno0);
                 setResult(RESULT_OK,returnIntent);     
                 finish();

        }       
    });
}

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    // TODO Auto-generated method stub
     ma.toggle(arg2);
}

public  void getAllCallLogs(ContentResolver cr) {

    Cursor phones = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
    while (phones.moveToNext())
    {
      String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
      String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
      System.out.println(".................."+phoneNumber); 
      name1.add(name);
      phno1.add(phoneNumber);
    }

    phones.close();
 }
class MyAdapter extends BaseAdapter implements CompoundButton.OnCheckedChangeListener
{  private SparseBooleanArray mCheckStates;
   LayoutInflater mInflater;
    TextView tv1,tv;
    CheckBox cb;
    MyAdapter()
    {
        mCheckStates = new SparseBooleanArray(name1.size());
        mInflater = (LayoutInflater)MainActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return name1.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub

        return 0;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View vi=convertView;
        if(convertView==null)
         vi = mInflater.inflate(R.layout.row, null); 
         tv= (TextView) vi.findViewById(R.id.textView1);
         tv1= (TextView) vi.findViewById(R.id.textView2);
         cb = (CheckBox) vi.findViewById(R.id.checkBox1);
         tv.setText("Name :"+ name1.get(position));
         tv1.setText("Phone No :"+ phno1.get(position));
         cb.setTag(position);
         cb.setChecked(mCheckStates.get(position, false));
         cb.setOnCheckedChangeListener(this);

        return vi;
    }
     public boolean isChecked(int position) {
            return mCheckStates.get(position, false);
        }

        public void setChecked(int position, boolean isChecked) {
            mCheckStates.put(position, isChecked);
        }

        public void toggle(int position) {
            setChecked(position, !isChecked(position));
        }
    @Override
    public void onCheckedChanged(CompoundButton buttonView,
            boolean isChecked) {
        // TODO Auto-generated method stub

         mCheckStates.put((Integer) buttonView.getTag(), isChecked);                 
    }       
}   
} 

row.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="15dp"
    android:layout_marginTop="34dp"
    android:text="TextView" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/checkBox1"
    android:layout_alignLeft="@+id/textView1"
    android:text="TextView" />

<CheckBox
    android:id="@+id/checkBox1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/textView1"
    android:layout_marginRight="22dp"
    android:layout_marginTop="23dp" />
 </RelativeLayout 

清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sendsmstoall"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />
 <uses-permission android:name="android.permission.READ_CONTACTS"/>
       <uses-permission android:name="android.permission.SEND_SMS" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.sendsmstoall.SendMessage"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
     <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >

    </activity>
</application>

</manifest>