1. 拖动控件的话编译器自动加的layout_blow=”@+id/xxx” id那个部分没有+号
Ctrl+f批量替换
EditText显示的行数android:singleLine="true"一行, android:lines="5" 多行
模拟器超时原因 电脑配置低,修改超时时间,模拟器socket挂了,重启一下
短信api SmsManager如果过时,导包的问题gsm 2G时代的,如果一个类无法new对象,那么它一定存在一个getDefaut或者getInstance的静态方法
2. SmsManager的方法
sendDataMessage(发送彩信)
sendMultipartTextMessage(发送多条信息),
sendTextMessage(目标手机, null(来源手机不支持), text, sentIntent, deliveryIntent)后两个参数,延迟报告和送达报告,不关心填null
需要这个权限 android.permission.SEND_SMS
短信都要最大长度的限制的,android提供了一个api用来拆分短信divideMessage(),返回ArrayList<String>,循环发送for(String str:contents){}
需要开启两个模拟器测试,电话号码就是端口号,此功能可以做出短信群发器
activity代码:
package com.tsh.sms; import java.util.ArrayList; import android.app.Activity; import android.os.Bundle; import android.telephony.SmsManager; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener { private EditText et_number; private EditText et_content; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bt_send=(Button) findViewById(R.id.bt_send); et_number=(EditText) findViewById(R.id.et_number); et_content=(EditText) findViewById(R.id.et_content); bt_send.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bt_send: String number=et_number.getText().toString().trim(); String content=et_content.getText().toString().trim(); if(TextUtils.isEmpty(number)||TextUtils.isEmpty(content)){ Toast.makeText(this, "电话号码和内容都不能为空", Toast.LENGTH_SHORT).show(); return; } SmsManager smsManager=SmsManager.getDefault(); ArrayList<String> contents = smsManager.divideMessage(content); for(String str:contents){ smsManager.sendTextMessage(number, null, str, null, null); } break; } } }
layout代码
<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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.tsh.sms.MainActivity" > <TextView android:id="@+id/tv_input_number" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="@string/input_tel_number" /> <EditText android:id="@+id/et_number" android:singleLine="true" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@id/tv_input_number" android:ems="10" android:inputType="phone" > <requestFocus /> </EditText> <TextView android:id="@+id/tv_number" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@id/et_number" android:text="@string/sms_content" /> <EditText android:id="@+id/et_content" android:lines="5" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@id/tv_number" android:ems="10" /> <Button android:id="@+id/bt_send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@id/et_content" android:text="@string/send" /> </RelativeLayout>
divideMessage
原文:http://www.cnblogs.com/taoshihan/p/5215447.html