android收短信开流量,第一个安卓应用---简易发送短信查询余额和流量APP

最近,开始接触安卓应用的开发,看了几集网易云课堂的视频,看了一下开发文档,发现光读光看没什么用,要实践才能出真知,于是就自己定了一个需求,慢慢开始写安卓应用。

1.自定需求:开发一个包括三大运营商的余额和流量查询。

2.查询资料,包括三大运营商短信查询的代码和号码。

三大运营商短信查询情况

服务

中国移动

中国联通

中国电信

查询余额

ye

101

102

查询流量

cxll

2082

108

3.开发阶段

阅读开发文档,熟悉基本概念activity,intent,布局,button

发现安卓自家的开发文档如果能够研究透了,安卓应用开发无压力了。附上地址:https://developer.android.google.cn/guide/

设计思路:6个button+三个运营商显示text。开始的思路:6个button均指向同一个onClick行为,此行为指向方法:sendMessage,然后在sendMessage里处理发送短信。使用intent,后来发现使用intent调用activity只能跳转到短信界面,并不能达到我的预期(预期是应用只按button,即可完成发送短信功能,可以返回接收短信信息,也可以不返回),下面是此部分代码:

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);

}

修改方案,实现在本应用内发送短信。6个button指向一个buttonClick,buttonClick处理三个运营商的信息,传递至sendMessage,sendMessage主要负责处理发送短信的工作。代码:

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();

ListdivideContents = smsManager.divideMessage(message);

for(String text : divideContents){

smsManager.sendTextMessage(phoneNumber, null, text, null, null);

}

}

刚开始,在sendmessage中简单的处理android.telephony.SmsManager smsManager = android.telephony.SmsManager.getDefault();smsManager.sendTextMessage(phoneNumber, null, message, null, null);应用出错,加入调试信息,判断是sendmessage中的问题。看来还是不能简单处理发送短信功能。

重新查阅了开发文档,应用出错的原因是没有添加发送短信的权限在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));关于这部分主要是参考其他几个博客的资料,具体原理还不算很了解,需要进一步钻研。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值