DOM解析XML文件3-SimpleAdapter_自定义布局
1.新建名为domxml的项目  
2.新建user_item.xml的自定义布局文件
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:descendantFocusability="blocksDescendants"
    android:gravity="center_vertical|center_horizontal"
    android:orientation="horizontal" >
    <!--自定义的布局界面的根标签中加入了:
       android:descendantFocusability="blocksDescendants".
    -->
    <TextView
        android:id="@+id/tv_name"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1" />
    <TextView
        android:id="@+id/tv_phone"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1" />
    <Button
        android:id="@+id/btn_call"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/btn_call" />
    <Button
        android:id="@+id/btn_sms"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/btn_sms" />
</LinearLayout>
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 - 28
 - 29
 - 30
 - 31
 - 32
 - 33
 - 34
 - 35
 - 36
 - 37
 - 38
 - 39
 - 40
 
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 - 28
 - 29
 - 30
 - 31
 - 32
 - 33
 - 34
 - 35
 - 36
 - 37
 - 38
 - 39
 - 40
 
字符串资源:  
Graphic Layout:  
3.在activity_main.xml中添加ListView控件
<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="${relativePackage}.${activityClass}" >
    <ListView
        android:id="@+id/lv_users"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 - 12
 - 13
 
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 - 12
 - 13
 
4.新建名为UserAdapter的自定义Adapter,继承BaseAdapter,注意data的存储方式
package com.example.adapter;
import java.util.List;
import java.util.Map;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.example.domxml.R;
import com.example.domxml.SmsActivity;
/**
 * 自定义的adapter   ListAdapter
 * @author Administrator
 *
 */
public class UserAdapter extends BaseAdapter{
    //要显示的数据
    private List<Map<String, Object>> data;
    //接受上下文
    private Context context;
    //声明一个内部类对象
    private ViewHolder viewHolder;
    /**
     * 通过构造函数传递
     * @param data
     */
    public UserAdapter(Context context,List<Map<String, Object>> data) {
        this.context=context;
        this.data=data;
    }
    //返回的总个数
    @Override
    public int getCount() {
        return data.size();
    }
    /**
     * 返回每个条目对应的数据
     */
    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return data.get(position);
    }
    /**
     * 返回的id 就是对应row id 和postion一致 
     */
    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }
    /**
     * 返回这个条目 对应控件对象
     */
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        System.out.println("converView@"+convertView);
        //首先判断当前条目是否为null
        if (convertView==null) {
            //初始化这个viewHolder对象
            viewHolder = new ViewHolder();
            //创建它
            convertView = View.inflate(context, R.layout.user_item, null);
            viewHolder.tv_name = (TextView) convertView.findViewById(R.id.tv_name);
            viewHolder.tv_phone = (TextView) convertView.findViewById(R.id.tv_phone);
            viewHolder.btn_call = (Button) convertView.findViewById(R.id.btn_call);
            viewHolder.btn_sms= (Button) convertView.findViewById(R.id.btn_sms);
            //google开发者建议使用的
            convertView.setTag(viewHolder);
        }else{
            viewHolder = (ViewHolder) convertView.getTag();
        }
        //获取list集合中map对象
        Map<String,Object> map = data.get(position);
        //设置值
        viewHolder.tv_name.setText(map.get("names").toString());
        final String phone = map.get("phone").toString();
        //设置
        viewHolder.tv_phone.setText(phone);
        //具体的按钮注册事件
        viewHolder.btn_call.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(context, "call---"+phone, 1).show();
                //执行打电话
                //1.定义打电话的意图对象
                Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+phone));
                //2.执行意图
                context.startActivity(intent);
                //3.记得添加打电话的权限  在项目清单中添加
            }
        });
        //给按钮注册事件
        viewHolder.btn_sms.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                //执行一个意图 打开发短信界面
                //1.定义一个意图
                Intent intent = new Intent(context,SmsActivity.class);
                //通过这个意图可以附带数据
                intent.putExtra("phone", phone);
                //2.执行意图
                context.startActivity(intent);
            }
        });
        return convertView;
    }
    //内部类   ViewHolder记录单个条目中所有属性
    class ViewHolder{
        public TextView tv_name,tv_phone;
        public Button btn_call,btn_sms;
    }
}
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 - 28
 - 29
 - 30
 - 31
 - 32
 - 33
 - 34
 - 35
 - 36
 - 37
 - 38
 - 39
 - 40
 - 41
 - 42
 - 43
 - 44
 - 45
 - 46
 - 47
 - 48
 - 49
 - 50
 - 51
 - 52
 - 53
 - 54
 - 55
 - 56
 - 57
 - 58
 - 59
 - 60
 - 61
 - 62
 - 63
 - 64
 - 65
 - 66
 - 67
 - 68
 - 69
 - 70
 - 71
 - 72
 - 73
 - 74
 - 75
 - 76
 - 77
 - 78
 - 79
 - 80
 - 81
 - 82
 - 83
 - 84
 - 85
 - 86
 - 87
 - 88
 - 89
 - 90
 - 91
 - 92
 - 93
 - 94
 - 95
 - 96
 - 97
 - 98
 - 99
 - 100
 - 101
 - 102
 - 103
 - 104
 - 105
 - 106
 - 107
 - 108
 - 109
 - 110
 - 111
 - 112
 - 113
 - 114
 - 115
 - 116
 - 117
 - 118
 - 119
 - 120
 - 121
 - 122
 - 123
 - 124
 - 125
 - 126
 - 127
 - 128
 - 129
 - 130
 - 131
 - 132
 - 133
 - 134
 - 135
 - 136
 - 137
 - 138
 - 139
 - 140
 
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 - 28
 - 29
 - 30
 - 31
 - 32
 - 33
 - 34
 - 35
 - 36
 - 37
 - 38
 - 39
 - 40
 - 41
 - 42
 - 43
 - 44
 - 45
 - 46
 - 47
 - 48
 - 49
 - 50
 - 51
 - 52
 - 53
 - 54
 - 55
 - 56
 - 57
 - 58
 - 59
 - 60
 - 61
 - 62
 - 63
 - 64
 - 65
 - 66
 - 67
 - 68
 - 69
 - 70
 - 71
 - 72
 - 73
 - 74
 - 75
 - 76
 - 77
 - 78
 - 79
 - 80
 - 81
 - 82
 - 83
 - 84
 - 85
 - 86
 - 87
 - 88
 - 89
 - 90
 - 91
 - 92
 - 93
 - 94
 - 95
 - 96
 - 97
 - 98
 - 99
 - 100
 - 101
 - 102
 - 103
 - 104
 - 105
 - 106
 - 107
 - 108
 - 109
 - 110
 - 111
 - 112
 - 113
 - 114
 - 115
 - 116
 - 117
 - 118
 - 119
 - 120
 - 121
 - 122
 - 123
 - 124
 - 125
 - 126
 - 127
 - 128
 - 129
 - 130
 - 131
 - 132
 - 133
 - 134
 - 135
 - 136
 - 137
 - 138
 - 139
 - 140
 
5.MainActivity.Java
package com.example.domxml;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import com.example.adapter.UserAdapter;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
public class MainActivity extends Activity {
    // 声明控件对象 视图V
    private ListView lv_users;
    // 集合
    private List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 获取控件对象
        lv_users = (ListView) findViewById(R.id.lv_users); // 视图 jsp html
        try {
            // dom解析 users.xml asserts目录中
            domParser();
            /*
             * context 上下文 data list集合 resource 资源布局文件
             * android.R.layout.simple_list_item_2 text1 text2
             * 
             * from map集合中的key是String ids names
             * 
             * to ids显示在布局文件中对应text2 names显示对应text1
             */
            // 适配器 控制层 C
            ListAdapter adapter = new UserAdapter(this, data);
            // 设置适配器
            lv_users.setAdapter(adapter);
            // 思考 点击具体的一个条目
            lv_users.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
                    //获取view控件中的控件  包括用户名控件 电话的控件
                    TextView tv_name = (TextView) view.findViewById( R.id.tv_name);
                    TextView tv_phone = (TextView) view.findViewById( R.id.tv_phone);
                    //获取用户名称
                    String name = tv_name.getText().toString();
                    //获取用户电话
                    String phone = tv_phone.getText().toString();
                    //执行打电话
                    //1.定义打电话的意图对象
                    Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+phone));
                    //2.执行意图
                    startActivity(intent);
                    //3.记得添加打电话的权限  在项目清单中添加
                }
            });
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    /**
     * 解析方法
     * 
     * @throws ParserConfigurationException
     * @throws IOException
     * @throws SAXException
     */
    private void domParser() throws ParserConfigurationException, IOException,
            SAXException {
        // 1.创建DocumentBuilderFactory对象
        DocumentBuilderFactory builderFactory = DocumentBuilderFactory
                .newInstance();
        // 2.通过工厂对象获取DocumentBuilder
        DocumentBuilder builder = builderFactory.newDocumentBuilder();
        //
        // 3 获取要解析的xml文件 对应的输入流
        InputStream is = getAssets().open("users.xml");
        // 4.利用DocumentBuilder的parse方法获取解析的users.xml的document对象
        Document document = builder.parse(is);
        // 5.处理解析
        // 1.获取文档的跟节点 users
        Element root = document.getDocumentElement();
        // 2.获取当前根节点下面所有user节点的集合
        NodeList nodeList = root.getElementsByTagName("user");
        // 遍历孩子节点
        for (int i = 0; i < nodeList.getLength(); i++) {
            // 获取具体的孩子节点
            Node node = nodeList.item(i); // user
            // 创建map对象
            Map<String, Object> map = new HashMap<String, Object>();
            // 获取user节点的所有孩子节点 id name
            NodeList nlist = node.getChildNodes();
            // 遍历孩子节点
            for (int index = 0; index < nlist.getLength(); index++) {
                // 获取具体的孩子节点
                Node n = nlist.item(index);
                // 判断该节点的名称是否是id
                if (n.getNodeName().equals("id")) {
                    // 设置user的id值
                    map.put("ids", n.getTextContent());
                    // 判断该节点的名称是否是name
                } else if (n.getNodeName().equals("name")) {
                    // 设置name值
                    map.put("names", n.getTextContent());
                } else if (n.getNodeName().equals("phone")) {
                    map.put("phone", n.getTextContent());
                }
            }
            // 添加到集合中
            data.add(map);
        }
    }
}
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 - 28
 - 29
 - 30
 - 31
 - 32
 - 33
 - 34
 - 35
 - 36
 - 37
 - 38
 - 39
 - 40
 - 41
 - 42
 - 43
 - 44
 - 45
 - 46
 - 47
 - 48
 - 49
 - 50
 - 51
 - 52
 - 53
 - 54
 - 55
 - 56
 - 57
 - 58
 - 59
 - 60
 - 61
 - 62
 - 63
 - 64
 - 65
 - 66
 - 67
 - 68
 - 69
 - 70
 - 71
 - 72
 - 73
 - 74
 - 75
 - 76
 - 77
 - 78
 - 79
 - 80
 - 81
 - 82
 - 83
 - 84
 - 85
 - 86
 - 87
 - 88
 - 89
 - 90
 - 91
 - 92
 - 93
 - 94
 - 95
 - 96
 - 97
 - 98
 - 99
 - 100
 - 101
 - 102
 - 103
 - 104
 - 105
 - 106
 - 107
 - 108
 - 109
 - 110
 - 111
 - 112
 - 113
 - 114
 - 115
 - 116
 - 117
 - 118
 - 119
 - 120
 - 121
 - 122
 - 123
 - 124
 - 125
 - 126
 - 127
 - 128
 - 129
 - 130
 - 131
 - 132
 - 133
 - 134
 - 135
 - 136
 - 137
 - 138
 - 139
 - 140
 - 141
 - 142
 - 143
 - 144
 - 145
 - 146
 - 147
 - 148
 - 149
 - 150
 - 151
 - 152
 - 153
 - 154
 - 155
 - 156
 - 157
 - 158
 - 159
 - 160
 - 161
 - 162
 - 163
 - 164
 
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 - 28
 - 29
 - 30
 - 31
 - 32
 - 33
 - 34
 - 35
 - 36
 - 37
 - 38
 - 39
 - 40
 - 41
 - 42
 - 43
 - 44
 - 45
 - 46
 - 47
 - 48
 - 49
 - 50
 - 51
 - 52
 - 53
 - 54
 - 55
 - 56
 - 57
 - 58
 - 59
 - 60
 - 61
 - 62
 - 63
 - 64
 - 65
 - 66
 - 67
 - 68
 - 69
 - 70
 - 71
 - 72
 - 73
 - 74
 - 75
 - 76
 - 77
 - 78
 - 79
 - 80
 - 81
 - 82
 - 83
 - 84
 - 85
 - 86
 - 87
 - 88
 - 89
 - 90
 - 91
 - 92
 - 93
 - 94
 - 95
 - 96
 - 97
 - 98
 - 99
 - 100
 - 101
 - 102
 - 103
 - 104
 - 105
 - 106
 - 107
 - 108
 - 109
 - 110
 - 111
 - 112
 - 113
 - 114
 - 115
 - 116
 - 117
 - 118
 - 119
 - 120
 - 121
 - 122
 - 123
 - 124
 - 125
 - 126
 - 127
 - 128
 - 129
 - 130
 - 131
 - 132
 - 133
 - 134
 - 135
 - 136
 - 137
 - 138
 - 139
 - 140
 - 141
 - 142
 - 143
 - 144
 - 145
 - 146
 - 147
 - 148
 - 149
 - 150
 - 151
 - 152
 - 153
 - 154
 - 155
 - 156
 - 157
 - 158
 - 159
 - 160
 - 161
 - 162
 - 163
 - 164
 
6.该案例集成了发短信的功能 
SmsActivity.java
package com.example.domxml;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class SmsActivity extends Activity {
    private Button sendBtn;
    private EditText etphone,etsms;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sms);
        // 获取点击发送按钮的控件对象
        sendBtn = (Button) findViewById(R.id.sendBtn);
        //获取电话号码的控件对象
        etphone=(EditText) findViewById(R.id.etphone);
        //获取要发送信息的控件对象
        etsms = (EditText) findViewById(R.id.etsms);
        //获取这个数据
        String phone = getIntent().getStringExtra("phone");
        etphone.setText(phone);
        Toast.makeText(this, "给这个家伙发短信"+phone, 1).show();
        // 注册按钮的点击事件
        sendBtn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {   
                //1.获取电话号码及发送的短信内容
                String phone = etphone.getText().toString();
                String content = etsms.getText().toString();
                //2.发短信的管理器对象
                SmsManager smsManager = SmsManager.getDefault();
                //3.拆分短信内容
                List<String> list = smsManager.divideMessage(content);
                //4.遍历发送信息
                for(String sms:list){
                    //5.逐条发送短信
                    smsManager.sendTextMessage(phone, null, sms, null, null);
                }
                //5.提示短信发送成功
                Toast.makeText(SmsActivity.this, "发短信成功", Toast.LENGTH_LONG).show();
            }
        });
    }
}
Activity_sms.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="${relativePackage}.${activityClass}" >
    <TextView
        android:id="@+id/tvphone"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/tip_phone" />
    <EditText
        android:id="@+id/etphone"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tvphone"
        android:inputType="phone" />
    <TextView
        android:id="@+id/tvsms"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/etphone"
        android:text="@string/tip_sms" />
    <!-- 作业思考 怎么实现自动换行的效果 -->
    <EditText
        android:id="@+id/etsms"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:gravity="top"
        android:layout_below="@+id/tvsms"
        android:lines="5"
         />
    <Button
        android:id="@+id/sendBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/etsms"
        android:text="@string/tip_send" />
</RelativeLayout>
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 - 28
 - 29
 - 30
 - 31
 - 32
 - 33
 - 34
 - 35
 - 36
 - 37
 - 38
 - 39
 - 40
 - 41
 - 42
 - 43
 - 44
 - 45
 - 46
 - 47
 - 48
 - 49
 - 50
 - 51
 - 52
 - 53
 - 54
 - 55
 - 56
 - 57
 - 58
 - 59
 - 60
 - 61
 - 62
 - 63
 - 64
 - 65
 - 66
 - 67
 - 68
 - 69
 - 70
 - 71
 - 72
 - 73
 - 74
 - 75
 - 76
 - 77
 - 78
 - 79
 - 80
 - 81
 - 82
 - 83
 - 84
 - 85
 - 86
 - 87
 - 88
 - 89
 - 90
 - 91
 - 92
 - 93
 - 94
 - 95
 - 96
 - 97
 - 98
 - 99
 - 100
 - 101
 - 102
 - 103
 - 104
 - 105
 - 106
 - 107
 - 108
 - 109
 
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 - 28
 - 29
 - 30
 - 31
 - 32
 - 33
 - 34
 - 35
 - 36
 - 37
 - 38
 - 39
 - 40
 - 41
 - 42
 - 43
 - 44
 - 45
 - 46
 - 47
 - 48
 - 49
 - 50
 - 51
 - 52
 - 53
 - 54
 - 55
 - 56
 - 57
 - 58
 - 59
 - 60
 - 61
 - 62
 - 63
 - 64
 - 65
 - 66
 - 67
 - 68
 - 69
 - 70
 - 71
 - 72
 - 73
 - 74
 - 75
 - 76
 - 77
 - 78
 - 79
 - 80
 - 81
 - 82
 - 83
 - 84
 - 85
 - 86
 - 87
 - 88
 - 89
 - 90
 - 91
 - 92
 - 93
 - 94
 - 95
 - 96
 - 97
 - 98
 - 99
 - 100
 - 101
 - 102
 - 103
 - 104
 - 105
 - 106
 - 107
 - 108
 - 109
 
 
7.运行效果:  
点击每一个item将拨打对应条目的号码,点击发短信按钮将给对应号码发短信。 
如何解决它们之间的冲突? 
                    
                
                
            
        
浙公网安备 33010602011771号