短信发送器小案例 smsManager

总结实现步骤 
  (1)画 mainActivity页面 
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <EditText
            android:id="@+id/et_number"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入联系人好码" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@id/et_number"
            android:layout_alignParentRight="true"
            android:onClick="add"
            android:text="+" />
    </RelativeLayout>

    <EditText
        android:id="@+id/et_sms_content"
        android:layout_width="match_parent"
        android:layout_height="250dp"
        android:gravity="top"
        android:hint="请输入发送短信的内容" />

    
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="insert"
        android:text="插入短信模板" />
    
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="click"
        android:text="发送短信" />

</LinearLayout>
(2) 画联系人页面  用一个listview展示就可以了  
(3)写mainActivity的逻辑    主要代码 
public class MainActivity extends Activity {

    private EditText et_number;
    private EditText et_sms_content;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //[1]获取我们关心的控件 
        
        et_number = (EditText) findViewById(R.id.et_number);
        et_sms_content = (EditText) findViewById(R.id.et_sms_content);
        
        
    }

    //点击按钮 跳转到短信模板页面 
    public void insert(View v){
        
        Intent intent = new Intent(this,SmsTemplateActivity.class);
        //☆☆☆开启Activity有2种方式  
        //(1)如果想要开启的Activity的界面的数据 用 startActivityForResult();
        //(2)如果就是简简单单页面的跳转  就用startActivity()
        startActivityForResult(intent, 2);
        
    }
    
    
    
    //点击+ 按钮 跳转到 联系人页面 
    public void add(View v) {
        //[1]创建意图对象  
        Intent intent = new Intent(this,ContactActivity.class);
        //[2]开启Activity
//        startActivity(intent);
        //[3]小细节 ☆☆☆☆  如果一个页面开启另外一个页面  并且当开启的这个页面关闭的时候 还要另外一个页面的数据  使用下面这个方法开启Activity
        startActivityForResult(intent, 1);
        
        
    }
    
    //点击按钮实现发送短信的逻辑 
    public void click(View v) {
        String number = et_number.getText().toString().trim();
        String content = et_sms_content.getText().toString().trim();
        
        //[1]获取smsManager的实例  
        SmsManager smsManager = SmsManager.getDefault();
        //[1.1]如果短信内容过过多 发不出去  分条发送 
        ArrayList<String> divideMessages = smsManager.divideMessage(content);
        for (String div : divideMessages) {
            
            //[2]发送短信数据 
            smsManager.sendTextMessage(number, null, div, null, null);
        }
        
    
        
        
    }

    //当我们开启的Activity的页面关闭的时候这个方法会调用
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        
        if (requestCode == 1) {
            
            //代表我要请求 ContactActivity的数据
            String phone = data.getStringExtra("name");
            et_number.setText(phone);
        }else if (requestCode == 2) {
            //代表我要请求SmsTemplateActivity 的数据
            String smscontent = data.getStringExtra("smscontent");
            et_sms_content.setText(smscontent);
            
            
        }
        
        
        /*if (resultCode == 10) {
            //说明数据是由 ContactActivity返回 
            
            String phone = data.getStringExtra("name");
            et_number.setText(phone);
            
        }else if (resultCode == 20) {
            //说明数据是由SmsTemplateActivity返回 
            String smscontent = data.getStringExtra("smscontent");
            et_sms_content.setText(smscontent);
            
        }
        */
        
        
        super.onActivityResult(requestCode, resultCode, data);
    }
    

}
(4)写短信模板页面  也是用一个listview展示即可  
(5)短信模板页面主要代码 如下 
public class SmsTemplateActivity extends Activity {

    
    String objects[] = {"我在开会,请稍后联系","我在吃饭,请稍后联系","我在打代码,请稍后联系","我在开车,请稍后联系","我在约会,请稍后联系"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_template);
        
        //[1]找到lv控件
        ListView lv = (ListView) findViewById(R.id.lv);
        //[2]创建数据适配器 
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.item, objects);
        //[3]把数据展示到listview上 
        lv.setAdapter(adapter);
        //[4]给lv设置点击事件 
        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
            
                //[5]获取我们点中条目的数据  
                String smscontent = objects[position];
                //[6]把这个数据返回给调用者 
                Intent intent = new Intent();
                intent.putExtra("smscontent", smscontent);
                //[7]通过这个方法把数据返回给调用者  
                setResult(20, intent);
                //[8]要记得调用finish 
                finish();
                
                
            }
        });
        
        
        
        
    }
}

(6)实现发送短信的功能 

//[1]获取smsManager的实例  
        SmsManager smsManager = SmsManager.getDefault();
        //[1.1]如果短信内容过过多 发不出去  分条发送 
        ArrayList<String> divideMessages = smsManager.divideMessage(content);
        for (String div : divideMessages) {
            
            //[2]发送短信数据 
            smsManager.sendTextMessage(number, null, div, null, null);
        }

(7)记得要加上发送短信的权限

android.permission.SEND_SMS
原文地址:https://www.cnblogs.com/xufengyuan/p/5866198.html