找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3494|回复: 1
打印 上一主题 下一主题
收起左侧

Android开发那些事(二)

[复制链接]
跳转到指定楼层
楼主
ID:51088 发表于 2014-8-21 03:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
                                                                                                                                                                       2013/5/5   星期日  傍晚

问题产生:

在学校连WiFi上网,有时信号不好或者人比较多,Zhbit和Zhbit2就连不上,但是CMCC 和CMCC-Auto通常还能连上,而且速度比前两个都快,只是有点不好,每次接上的时候要申请动态密码(当然也可以用静态密码,就不用每次都输入,只是我不喜欢把密码直接记录在浏览器上),申请到的密码通过短信发到手机上,由于不想打开短信,而且信息的内容会在通知栏上显示,所以每次都在通知栏上看密码,但是显示
的时间很短,大概就一秒钟,稍不留神就记错,而且还要输入,觉得特不方便。

问题解决:
写个小程序,能获取有动态密码短信里面的6位WiFi密码,并复制到剪贴板上,那样就能直接在输入框粘贴密码就可以了。

分析:
1.发送WiFi动态密码的号码都是10658029(不知道其他地方会不会不一样),短信格式是:您申请的动态密码为:XXXXXX  只有密码   是数字,那样提取密码就很简单了。
2. 静态注册BroadcastReceive广播时,系统收到短信就会自动调用订阅了接收短信的程序,所以不用为程序写开机启动。

程序代码:

activity_main.xml
---------------------------------------------------------------------------------------------------------------------------------------------------------------

<LinearLayout 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=".MainActivity"
    android:orientation="vertical"
    >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="欢迎使用本程序!" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="默认号码为10658029"
        />
    </LinearLayout>




MainAcitiviy.java
---------------------------------------------------------------------------------------------------------------------------------------------------------------


package com.example.getwifipwd;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
               
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.main, menu);
                return true;
        }

}

myBroad.java
---------------------------------------------------------------------------------------------------------------------------------------------------------------

package com.example.getwifipwd;

import android.annotation.SuppressLint;
import android.content.BroadcastReceiver;
import android.content.ClipData;
import android.text.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;
import android.util.Log;
import android.widget.Toast;


public class myBroad extends BroadcastReceiver {

        // private static final String action =
        // "android.provider.Telephony.SMS_RECEIVED";
        
        @Override
        public void onReceive(Context context, Intent intent) {
                // TODO Auto-generated method stub

                SmsManager sms = SmsManager.getDefault();
                Bundle bundle = intent.getExtras();
                String to = null;
                String Msg = null;

               
                //读取短信内容
                if (bundle != null) {
                        Object[] pdus = (Object[]) bundle.get("pdus");
                        SmsMessage[] messages = new SmsMessage[pdus.length];
                        for (int i = 0; i < pdus.length; i++)
                                messages[ i] = SmsMessage.createFromPdu((byte[]) pdus[ i]);

                        for (SmsMessage message : messages) {
                                Msg = message.getMessageBody();
                                to = message.getOriginatingAddress();
                        }

                        Log.i("手机号码:", to);
                        Log.i("内容:", Msg);

                        
                        if (to.equals("10658029")) {
                                String Number = "";

                                //提取短信内的动态wifi密码
                                for (int i = 0; i < Msg.length(); i++) {
                                        if (Msg.charAt(i) >= '0' && Msg.charAt(i) <= '9') {
                                                Number += Msg.charAt(i);
                                        }
                                }

                                if (Number.length() == 6) {

                                        Log.i("密码", Number);
//                                        复制到剪贴板
                                        ClipboardManager cmb = (ClipboardManager) context
                                                        .getSystemService(Context.CLIPBOARD_SERVICE);
//                                        ClipData textCD = ClipData.newPlainText("stringText",
//                                                        Number);
//                                        cmb.setPrimaryClip(textCD);
                                        cmb.setText(Number);
                                        Toast.makeText(context, "密码:" + Number + "已复制到剪贴板",
                                                        Toast.LENGTH_LONG).show();
                                }
                        }

                }

        }

}

AndroidManifest.xml
---------------------------------------------------------------------------------------------------------------------------------------------------------------
增加接收短信权限:
<uses-permission android:/>

订阅广播:
<receiver android:>

            <intent-filter>
                <action android:></action>

            </intent-filter>
</receiver>



效果:
在Uc浏览器上测试





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:97249 发表于 2015-12-23 10:55 | 只看该作者
牛人啊,我还不会ANDRID啊,高人求教!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表