由于学校的电信宽带需要每天使用短信获取一次登录密码,每次手动输入一个字符串"xykdmm"到"10000"显然是很麻烦的,就想自己写一个软件来一键获取密码,第一版软件实现了一个功能,点击自动获取按钮就可以自动在后台发送一条获取密码的短信,但是查看还是需要手动到短信列表中查看,然后又想加一个功能在收到密码后自动将验证码显示到一个textView。一个安卓新手两个下午完成了这个软件,现在还是有点小遗憾,没有完成定时发送的功能,本来是想每天早上7点自动发送短信的,下个周末再将这个功能完善吧。

通过完成这个软件了解了很多知识。

下面是代码。

package com.nimatech.caopeng.sendsms;import android.Manifest;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.telephony.SmsManager;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class MainActivity extends AppCompatActivity {SmsManager smsManager = SmsManager.getDefault();private Button button;private Button settimebutton;final private int REQUEST_CODE_ASK_PERMISSIONS = 123;private SmsObserver smsObserver;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);Button button = (Button) findViewById(R.id.send0);Button settimebutton = (Button) findViewById(R.id.settimesend);smsObserver = new SmsObserver(this, smsHandler);TextView textView1 = (TextView) findViewById(R.id.textView1);getContentResolver().registerContentObserver(SMS_INBOX, true, smsObserver);setSupportActionBar(toolbar);
//        requestPermissions(new String[]{Manifest.permission.SEND_SMS},
//                REQUEST_CODE_ASK_PERMISSIONS);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);fab.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {smsManager.sendTextMessage("10000", null, "xykdmm", null, null);Toast.makeText(MainActivity.this, "只需要点一下就好了!", Toast.LENGTH_LONG).show();}});button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {smsManager.sendTextMessage("10000", null, "xykdmm", null, null);Toast.makeText(MainActivity.this, "只需要点一下就好了!", Toast.LENGTH_LONG).show();}});settimebutton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//操作:发送一个广播,广播接收后Toast提示定时操作完成Intent intent = new Intent(MainActivity.this, AlermReceiver.class);intent.setAction("short");PendingIntent sender =PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);//设定一个五秒后的时间Calendar calendar = Calendar.getInstance();calendar.setTimeInMillis(System.currentTimeMillis());calendar.add(Calendar.SECOND, 20);AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);alarm.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
//或者以下面方式简化
//alarm.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+5*1000, sender);
}});}public Handler smsHandler = new Handler() {// 这里可以进行回调的操作// TODOpublic void handleMessage(android.os.Message msg) {System.out.println("smsHandler 执行了.....");};};private Uri SMS_INBOX = Uri.parse("content://sms/");public void getSmsFromPhone() {ContentResolver cr = getContentResolver();String[] projection = new String[]{"body", "address", "person"};// "_id", "address",// "person",, "date",// "typeString where = " date >  "+ (System.currentTimeMillis() - 10 * 60 * 1000);Cursor cur = cr.query(SMS_INBOX, projection, where, null, "date desc");if (null == cur)return;if (cur.moveToNext()) {String number = cur.getString(cur.getColumnIndex("address"));// 手机号String name = cur.getString(cur.getColumnIndex("person"));// 联系人姓名列表String body = cur.getString(cur.getColumnIndex("body"));System.out.println(">>>>>>>>>>>>>>>>手机号:" + number);System.out.println(">>>>>>>>>>>>>>>>联系人姓名列表:" + name);System.out.println(">>>>>>>>>>>>>>>>短信的内容:" + body);// 这里我是要获取自己短信服务号码中的验证码~~// body="测试验证码2346ds";Pattern pattern = Pattern.compile("[a-zA-Z0-9]{6}");Matcher matcher = pattern.matcher(body);//
if (matcher.find()) {String res = matcher.group().substring(0, 6);// 获取短信的内容
setTextView(res);System.out.println(res);}}}protected void setTextView(String text) {TextView textView = (TextView) findViewById(R.id.textView1);textView.setText(text);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();//noinspection SimplifiableIfStatementif (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}class SmsObserver extends ContentObserver {public SmsObserver(Context context, Handler handler) {super(handler);}@Overridepublic void onChange(boolean selfChange) {super.onChange(selfChange);// 每当有新短信到来时,使用我们获取短消息的方法
            getSmsFromPhone();}}
}

package com.nimatech.caopeng.sendsms;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsManager;
import android.widget.Toast;/*** Created by caopeng on 15/10/31.*/
public class AlermReceiver extends BroadcastReceiver {SmsManager smsManager = SmsManager.getDefault();public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stubif(intent.getAction().equals("short")){smsManager.sendTextMessage("10000", null, "xykdmm", null, null);Toast.makeText(context, "短信已发送", Toast.LENGTH_LONG).show();}else{Toast.makeText(context, "repeating alarm",Toast.LENGTH_LONG).show();}}
}

<TextView android:text=" " android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/textView1"android:textColor="#000000"android:textSize="50dp"android:layout_marginTop="52dp"android:layout_below="@+id/textView"android:layout_alignParentLeft="true"android:layout_alignParentStart="true" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="只需要点一下就好了"android:id="@+id/send0"android:layout_marginBottom="91dp"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="定时发送"android:id="@+id/settimesend"android:layout_alignTop="@+id/send0"android:layout_alignParentLeft="true"android:layout_alignParentStart="true" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceSmall"android:text="验证码是:"android:id="@+id/textView"android:textColor="#000000"android:textSize="30dp"android:layout_alignParentTop="true"android:layout_alignLeft="@+id/textView1"android:layout_alignStart="@+id/textView1"android:layout_marginTop="43dp" />

<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
// 取得读取与发送短信的权限
<receiver android:name="com.nimatech.caopeng.alerm.AlermReceiver"/>
// 注册接收器

转载于:https://www.cnblogs.com/airpeng/p/4928645.html

我的第一个app:电信宽带密码一键获取客户端相关推荐

  1. App的手势密码你做对了吗?

    昨天回顾手势密码的流程,想着一个App的手势密码是统一设置的还是,一个账号一个手势密码? 记得这个问题在需求评审的时候讨论过,因为手势密码不可能上传服务器,每次都服务器请求手势密码是不现实的,第一是反 ...

  2. 如何解决联通电信宽带连接错误691

    我想使用电脑的朋友一定经常遇到这种情况,在家里用台式机拨号可以上网,但换了一台笔记本就上不了.或者本来用的帐号密码可以上,但换到别人家又上不去了.他们都同样提示错误691.错误691是宽带adsl拨号 ...

  3. 家里的电脑通过电信宽带设置成外网服务器

    家里的电脑通过电信宽带设置成外网服务器 事情原由 最近要和同事远程开发一个东西,需要一个外网的mysql数据库. 自己买的阿里云服务器只有1M的带宽,上面安装的mysql服务器连接很慢,且不稳定,内存 ...

  4. 友华改设备标识命令_电信路由器密码怎么修改,路由器牌子是友华通信

    您好! 在有线上网的电脑上:启动浏览器,在地址栏中输入:192.168.1.1 或路由器说明书或其外壳背面注明的其他地址,回车,进入路由器的设置界面.在对话框中输入用户名和密码,两者一般默认都是adm ...

  5. 如何设置路由器连上电信宽带

    昨天寝室拉了电信网,室友有一个华硕的路由器,结果自己在寝室倒腾了几乎一个下午都没设置好,最后在大神的帮助下才得以连上网,在这里将设置过程分享一下: 首先认识一下路由器,一般路由器都有一个WAN口和四个 ...

  6. 10年老电脑如何提速_电信宽带免费提速至200M,面向全国用户活动日期2020年11月9日至12月31日...

    近日中国电信免费提速活动,也是为了大家方便剁手吧! 2020年11月9日至12月31日,针对接入速率200Mbps以下的电信光纤宽带家庭用户,中国电信推出免费在线提速到200Mbps的优惠活动:针对接 ...

  7. Android Studio下载、安装、配置及连接真机开发第一个App ——入门选手快进

      最近的安卓测试给我心态搞蹦了,问也没人问,难受简直了!又是一轮自学之路(说实话这一路上教会我一个很大的道理就是一定要有愿意帮助你的老师,还有自己的自觉,一样也不能少.前者没有的话只能后者补了呜呜呜 ...

  8. 铁通计算机网络,【计算机网络技术】常见宽带错误代码及处理办法(使用移动宽带【铁通】、部分电信宽带故障、联通宽带故...

    故障代码 602 问题:拨号网络由于设备安装错误或正在使用,不能进行连接. 原因:PPPOE没有完全和正确的安装 解决:卸载干净任何PPPOE软件,重新安装. 故障代码 605 问题:拨号网络由于设备 ...

  9. 更改计算机网络密码,宽带密码修改后断网,怎样修改路由器密码

    随着现代社会时代的快速发展,越来越多的人开始使用计算机上网. 想要在家能够正常上网,就必须使用到宽带和路由器. 由于各种各样的原因,人们会需要修改各自的宽带密码,来确保自己家的网络不被别人偷偷使用. ...

  10. 电信宽带连接不上无线可连接服务器,电信宽带wifi连不上网的解决方法

    电信宽带出错那是常有的事,出现连接不上网络一般会提示错误代码,原因可能是系统设置问题,也可能是网络运营商那边出现问题.下面是学习啦小编为大家整理的关于电信宽带wifi连不上网,一起来看看吧! 电信宽带 ...

最新文章

  1. 获取MSSQL Server中的相关信息(视图、存储过程、触发器、表)
  2. nacos单机模式使用mysql库_Nacos docker 单机模式,mysql 搭建
  3. 论文浅尝 - ISWC2021 | 当知识图谱遇上零样本视觉问答
  4. 时尚美妆图片,让你饱眼福的唯美壁纸
  5. 苹果Mac电脑上fn键的妙用
  6. javascript中concat方法深入理解
  7. HTML5大数据可视化效果(二)可交互地铁线路图
  8. Activity生命周期记忆方法
  9. 【PaddleHub模型贡献】一行代码实现水表的数字表盘分割
  10. 4. “强人”的“皮球”生涯
  11. CF1129C Morse Code
  12. JNI教程(一):什么是JNI
  13. 用H5和原生JS制作一款简单的视频播放器
  14. win10 raw linux ntfs,win10升级后磁盘变成RAW格式无法访问
  15. postcss-pxtorem使用方式
  16. k-means(k均值聚类)算法介绍及实现(c++)
  17. 【Java SE】第二话·第一个Java程序
  18. 算法利用:人机交互面临的道德漏洞
  19. 导入技能要素三大类_导入技能的构成要素
  20. 如何通过晋升答辩?既升职又加薪!

热门文章

  1. 人工智能是一个骗局?
  2. 高可靠性——TSN (Time Sensitive Network 时间敏感网络) 802.1Qci 协议介绍
  3. 免费的进销存系统哪个好一些?
  4. 关于STM32Flash详解
  5. springboot实现第三方qq登入
  6. 2014-10-18 多玩初面
  7. Windows10重新安装软件商店
  8. java texttospeech_TextToSpeech 文本自动朗读
  9. Oracle财务管理系统
  10. 影子之美!太阳日照阴影变化之计算模拟