package com.example;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.example.bean.MyDBHelper;
import com.example.bean.SettingData;
import android.app.*;
import android.content.*;
import android.database.Cursor;
import android.os.*;
import android.provider.ContactsContract;
import android.telephony.*;
import android.view.*;
import android.widget.*;
public class WriteMessageActivity extends Activity {
private Button sendSMSButton;
private AutoCompleteTextView phoneNumberText;
private EditText messageText;
private MyDBHelper myDBHelper;
private List<String> strs;
private View.OnClickListener onSendButtonClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
sendOrSave("1");
Intent intent = new Intent(WriteMessageActivity.this,WriteMessageActivity.class);
startActivity(intent);
WriteMessageActivity.this.finish();
}
};
private void sendOrSave(String type) {
String phoneNo = "";
String noPhone = phoneNumberText.getText().toString();
boolean flag = false;
for (int i = 0; i < noPhone.length(); i++) {
if (!Character.isDigit(noPhone.charAt(i))) {
flag = true;
break;
}
}
if (flag) {
phoneNo = queryPhoneNumbers(phoneNumberText.getText().toString());
} else {
phoneNo = noPhone;
}
String message = messageText.getText().toString();
if (phoneNo.length() > 0 && message.length() > 0) {
// sendSMS(phoneNo, message);
if (type.equals("1")) {
if(SettingData.save){
Date date = new Date();
String time = date.toLocaleString();
myDBHelper.insert(phoneNo, message, type, time);
Toast.makeText(WriteMessageActivity.this, "已保存到发件箱!",
Toast.LENGTH_LONG).show();
}
sendMessageWithResponse(phoneNo, message);
}else{
Date date = new Date();
String time = date.toLocaleString();
myDBHelper.insert(phoneNo, message, type, time);
Toast.makeText(WriteMessageActivity.this, "已保存到草稿箱!",
Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(WriteMessageActivity.this, "没有这个联系人!",
Toast.LENGTH_SHORT).show();
}
}
public void onSaveRabbageBox(View view) {
sendOrSave("2");
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.writemessage);
Intent intent = getIntent();
//
sendSMSButton = (Button) findViewById(R.id.sendSMSButton);
sendSMSButton.setOnClickListener(onSendButtonClick);
phoneNumberText = (AutoCompleteTextView) findViewById(R.id.phoneNumEditText);
messageText = (EditText) findViewById(R.id.messageEditText);
myDBHelper = new MyDBHelper(this);
String phonenum = intent.getStringExtra("phonenumber");
if (phonenum != null) {
phoneNumberText.setText(phonenum);
}
strs = getContactName();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, strs);
phoneNumberText.setAdapter(adapter);
}
public String queryPhoneNumbers(String name) {
String phone = "";
//
ContentResolver cr = getContentResolver();
Cursor pCur = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " = ?",
new String[] { name }, null);
if (pCur.moveToNext()) {
phone = pCur
.getString(pCur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
pCur.close();
return phone;
}
public List<String> getContactName() {
List<String> list = new ArrayList<String>();
ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
null, null, null);
if (cur.getCount() > 0) {
while (cur.moveToNext()) {
// String id =
// cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
String name = cur
.getString(cur
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
list.add(name);
}
}
return list;
}
@Override
public boolean onCreatePanelMenu(int featureId, Menu menu) {
// TODO Auto-generated method stub
menu.add(0, 1, 1, "返回");
return super.onCreatePanelMenu(featureId, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
if (item.getItemId() == 1) {
WriteMessageActivity.this.setResult(RESULT_OK);
this.finish();
this.finish();
}
return super.onOptionsItemSelected(item);
}
private void sendMessageWithResponse(String phoneNumber, String message) {
// 表示发送时候ACTION名称
String SENT = "SMS_SENT";
// 表示收到短信时的ACTION名称。
String DELIVERED = "SMS_DELIVERED";
// 两次调用getBroadcast方法,得到两个PendingIntent,一个是为发送成功时使用的,一个是为接收成功时使用的。
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(
SENT), 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
new Intent(DELIVERED), 0);
//
registerReceiver(new SendBroadcastReceiver(), new IntentFilter(SENT));
registerReceiver(new DeliverBroadcastReceiver(), new IntentFilter(
DELIVERED));
//
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
}
/**
*
*/
private class SendBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String text = null;
switch (getResultCode()) {
case Activity.RESULT_OK:
text = "SMS sent";
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
text = "Generic failure";
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
text = "No service";
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
text = "Nnll pdu";
case SmsManager.RESULT_ERROR_RADIO_OFF:
text = "Radio off";
break;
default:
break;
}
if (text != null) {
Toast.makeText(context, text, Toast.LENGTH_LONG).show();
}
}
}
private class DeliverBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String text = null;
switch (getResultCode()) {
case Activity.RESULT_OK:
text = "SMS delivered";
break;
case Activity.RESULT_CANCELED:
text = "SMS not delivered";
break;
default:
break;
}
if (text != null) {
Toast.makeText(context, text, Toast.LENGTH_LONG).show();
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
安卓的短信收发程序实例
共80个文件
class:36个
java:16个
png:11个
5星 · 超过95%的资源 需积分: 9 22 下载量 118 浏览量
2013-03-14
13:53:26
上传
评论
收藏 393KB RAR 举报
温馨提示
成熟的安卓短信收发实例,希望在程序开发过程中,给大家带来方便。也在学习过程中有很大进步。
资源推荐
资源详情
资源评论
收起资源包目录
MySMSMessageTest.rar (80个子文件)
MySMSMessageTest
bin
classes.dex 33KB
MySMSMessageTest.apk 124KB
com
example
MainActivity.class 5KB
MessageContextActivity$1.class 2KB
MainActivity$2.class 2KB
MainActivity$1.class 1KB
MessageContextActivity$2.class 2KB
QQMessageActivity.class 5KB
R$layout.class 675B
WriteMessageActivity$1.class 1KB
QQMessageActivity$SendBroadcastReceiver.class 1KB
R$id.class 1KB
R$drawable.class 615B
MessagePhoneActivity$4.class 1KB
MessagePhoneActivity$1.class 2KB
MessageContextActivity.class 5KB
bean
MyDBHelper.class 4KB
MenuInformation.class 1KB
SettingData.class 387B
MessageBean.class 2KB
PhoneBean.class 1KB
MessagePhoneActivity.class 6KB
R$attr.class 319B
MessageSettingActivity.class 1KB
R.class 482B
MessageContextActivity$2$1.class 3KB
WriteMessageActivity.class 8KB
adapter
MenuAdapter.class 3KB
MessageAdapter.class 3KB
PhoneBeanAdapter.class 3KB
MessagePhoneActivity$2.class 2KB
WriteMessageActivity$DeliverBroadcastReceiver.class 1KB
SMSReceiver.class 3KB
R$string.class 406B
QQMessageActivity$DeliverBroadcastReceiver.class 1KB
MessagePhoneActivity$3.class 2KB
WriteMessageActivity$SendBroadcastReceiver.class 1KB
QQMessageActivity$1.class 1KB
resources.ap_ 106KB
res
drawable-ldpi
icon.png 2KB
drawable-hdpi
icon.png 4KB
drawable
write.png 4KB
background.png 67KB
recive.png 4KB
repair.png 3KB
sended.png 4KB
cl.png 3KB
setting.png 4KB
ra.png 4KB
values
strings.xml 179B
drawable-mdpi
icon.png 3KB
layout
message_setting.xml 1KB
list_item.xml 927B
qqmessage_main.xml 1KB
message_main.xml 602B
receiverphone_item.xml 868B
main.xml 2KB
writemessage.xml 1KB
message_item.xml 940B
receiverphone_main.xml 434B
assets
default.properties 364B
gen
com
example
R.java 3KB
src
com
example
MessageSettingActivity.java 986B
QQMessageActivity.java 5KB
MessagePhoneActivity.java 5KB
bean
MenuInformation.java 702B
PhoneBean.java 784B
MyDBHelper.java 3KB
SettingData.java 97B
MessageBean.java 1KB
SMSReceiver.java 2KB
WriteMessageActivity.java 6KB
MainActivity.java 5KB
adapter
MenuAdapter.java 2KB
MessageAdapter.java 2KB
PhoneBeanAdapter.java 2KB
MessageContextActivity.java 5KB
.project 852B
.classpath 280B
AndroidManifest.xml 1KB
共 80 条
- 1
资源评论
- yupple2014-07-30谢谢,太好了,10分值得!!
- sunbjtu2014-04-25很不错,可以用。Android测试版本最好在4.0以下
- 北海散人2013-06-03可用。实际可操作,功能很完善的一个短信收发代码。
hbhsj
- 粉丝: 8
- 资源: 35
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功