最近,开始接触安卓应用的开发,看了几集网易云课堂的视频,看了一下开发文档,发现光读光看没什么用,要实践才能出真知,于是就自己定了一个需求,慢慢开始写安卓应用。
1.自定需求:开发一个包括三大运营商的余额和流量查询。
2.查询资料,包括三大运营商短信查询的代码和号码。
服务 | 中国移动 | 中国联通 | 中国电信 |
查询余额 | ye | 101 | 102 |
查询流量 | cxll | 2082 | 108 |
3.开发阶段
public void sendMessage(View view) {
Intent intent = new Intent();
if (view.getId() == R.id.cmcc_balance) {
Uri uri = Uri.parse("smsto:10086");
intent =new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", "ye");
}else if (view.getId() == R.id.cmcc_remain) {
Uri uri = Uri.parse("smsto:10086");
intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", "cxll");
}else if (view.getId() == R.id.telecom_balance) {
Uri uri = Uri.parse("smsto:10000");
intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", "102");
}else if (view.getId() == R.id.telecom_remain) {
Uri uri = Uri.parse("smsto:10000");
intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", "108");
}else if (view.getId() == R.id.unicom_balance) {
Uri uri = Uri.parse("smsto:10010");
intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", "101");
}else if (view.getId() == R.id.unicom_remain) {
Uri uri = Uri.parse("smsto:10010");
intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", "2082");
}
startActivity(intent);
}
public void buttonClick(View view){
String phoneString = new String();
String smsString = new String();
if (view.getId() == R.id.cmcc_balance) {
phoneString = "10086";
smsString = "ye";
}else if (view.getId() == R.id.cmcc_remain) {
phoneString = "10086";
smsString = "cxll";
}else if (view.getId() == R.id.telecom_balance) {
phoneString = "10000";
smsString = "102";
}else if (view.getId() == R.id.telecom_remain) {
phoneString = "10000";
smsString = "108";
}else if (view.getId() == R.id.unicom_balance) {
phoneString = "10010";
smsString = "101";
}else if (view.getId() == R.id.unicom_remain) {
phoneString = "10010";
smsString = "2082";
}
sendMessage(phoneString, smsString);
}
senMessage()代码:
public void sendMessage(String phoneNumber,String message) {
android.telephony.SmsManager smsManager = android.telephony.SmsManager.getDefault();
List divideContents = smsManager.divideMessage(message);
for(String text : divideContents){
smsManager.sendTextMessage(phoneNumber, null, text, null, null);
}
}
重新查阅了开发文档,应用出错的原因是没有添加发送短信的权限在manifast文件中,所以应用发送短信时出错。修改后应用实现自己的基本预期。
使用boardcast广播,接收系统返回的消息,其中包括:发送成功和收信人接收成功。
其中,处理发送成功消息的代码:
context.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode()) {
case Activity.RESULT_OK:
Toast.makeText(context, "短信发送成功", Toast.LENGTH_SHORT).show();
break;
case android.telephony.SmsManager.RESULT_ERROR_GENERIC_FAILURE:
case android.telephony.SmsManager.RESULT_ERROR_RADIO_OFF:
case android.telephony.SmsManager.RESULT_ERROR_NULL_PDU:
break;
}
}
}, new IntentFilter(SEND_SMS_ACTION));
处理收信人接收成功消息代码:
context.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context arg0, Intent arg1) {
Toast.makeText(context, "收信人已经成功接收", Toast.LENGTH_SHORT).show();
}
}, new IntentFilter(DELIVERED_SMS_ACTION));
关于这部分主要是参考其他几个博客的资料,具体原理还不算很了解,需要进一步钻研。