找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4095|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

Android開發(fā)那些事(二)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:51088 發(fā)表于 2014-8-21 03:33 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
                                                                                                                                                                       2013/5/5   星期日  傍晚

問題產(chǎn)生:

在學(xué)校連WiFi上網(wǎng),有時(shí)信號不好或者人比較多,Zhbit和Zhbit2就連不上,但是CMCC 和CMCC-Auto通常還能連上,而且速度比前兩個都快,只是有點(diǎn)不好,每次接上的時(shí)候要申請動態(tài)密碼(當(dāng)然也可以用靜態(tài)密碼,就不用每次都輸入,只是我不喜歡把密碼直接記錄在瀏覽器上),申請到的密碼通過短信發(fā)到手機(jī)上,由于不想打開短信,而且信息的內(nèi)容會在通知欄上顯示,所以每次都在通知欄上看密碼,但是顯示
的時(shí)間很短,大概就一秒鐘,稍不留神就記錯,而且還要輸入,覺得特不方便。

問題解決:
寫個小程序,能獲取有動態(tài)密碼短信里面的6位WiFi密碼,并復(fù)制到剪貼板上,那樣就能直接在輸入框粘貼密碼就可以了。

分析:
1.發(fā)送WiFi動態(tài)密碼的號碼都是10658029(不知道其他地方會不會不一樣),短信格式是:您申請的動態(tài)密碼為:XXXXXX  只有密碼   是數(shù)字,那樣提取密碼就很簡單了。
2. 靜態(tài)注冊BroadcastReceive廣播時(shí),系統(tǒng)收到短信就會自動調(diào)用訂閱了接收短信的程序,所以不用為程序?qū)戦_機(jī)啟動。

程序代碼:

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="默認(rèn)號碼為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;

               
                //讀取短信內(nèi)容
                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("手機(jī)號碼:", to);
                        Log.i("內(nèi)容:", Msg);

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

                                //提取短信內(nèi)的動態(tài)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);
//                                        復(fù)制到剪貼板
                                        ClipboardManager cmb = (ClipboardManager) context
                                                        .getSystemService(Context.CLIPBOARD_SERVICE);
//                                        ClipData textCD = ClipData.newPlainText("stringText",
//                                                        Number);
//                                        cmb.setPrimaryClip(textCD);
                                        cmb.setText(Number);
                                        Toast.makeText(context, "密碼:" + Number + "已復(fù)制到剪貼板",
                                                        Toast.LENGTH_LONG).show();
                                }
                        }

                }

        }

}

AndroidManifest.xml
---------------------------------------------------------------------------------------------------------------------------------------------------------------
增加接收短信權(quán)限:
<uses-permission android:/>

訂閱廣播:
<receiver android:>

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

            </intent-filter>
</receiver>



效果:
在Uc瀏覽器上測試





分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:97249 發(fā)表于 2015-12-23 10:55 | 只看該作者
牛人啊,我還不會ANDRID啊,高人求教!
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表