日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

7.腾讯微博Android客户端开发——自动获取验证码(1)

發布時間:2024/1/8 Android 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 7.腾讯微博Android客户端开发——自动获取验证码(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?通過前面的介紹,我們成功獲取了Access?Token,但是在該過程中有個不好的地方:用戶輸入完QQ信息后,需要記錄驗證碼,然后返回至Activity手動輸入驗證碼,這將會使我們的程序顯得非常不友好。我們能不能讓程序自動獲取到平臺返回過來的驗證碼,而不需要用戶手動收入呢?通過參考其它資料,找到了兩種解決方法,本次和大家分享第一種解決方案。

在進行正題之前,我們先來做一個簡單的實驗。下面是我編寫的一個簡單的測試網頁,其中包含兩個鏈接,第一個鏈接比較容易理解,點擊后跳轉到百度,第二個鏈接如果在我們的PC瀏覽器點擊肯定會提示找不到網頁,但是放在Android系統中呢?下面我們來進行測試。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html> <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Untitled</title> </head> <style> body {font-size: 20px;font-weight: bold;color: #0000FF; } </style> <body><a href="http://www.baidu.com">百度一下</a><br><br> <a href="android://MainActivity?id=coolszy">啟動Android</a></body> </html>

創建一個Android項目,其中MainActivity界面如下:

?同時“打開”按鈕進行如下操作:

btnOpen=(Button)findViewById(R.id.btnOpen); btnOpen.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v){//測試網頁地址Uri uri = Uri.parse("http://192.168.1.100:8080/index.htm"); Intent intent = new Intent(Intent.ACTION_VIEW, uri);startActivity(intent);} });

運行模擬器。點擊“打開”按鈕,點擊“啟動Android”鏈接并沒有任何效果,在Logcat下輸出如下錯誤信息:

android://MainActivity?id=coolszy The protocol is not supported.
提示我們的android協議不支持。熟悉<intent-filter>的朋友應該知道?<action>,?<category>,,和<data>?這幾個元素,通過配置這幾個元素我們可以隱性的啟動Activity,在這里我們可以通過配置這三個元素讓我們的瀏覽器支持android協議,在MainActivity <intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /> </intent-filter>

下再添加一個<intent-filter>

<intent-filter><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><data android:scheme="android" android:host="MainActivity" /> </intent-filter>

添加完畢后當我們再次運行模擬器。點擊“打開”按鈕,點擊“啟動Android”鏈接后我們發現我們的又回到了MainActivity注意我們是通過瀏覽器啟動Activity。下面我們需要處理的就是獲取請求的路徑,也就是?android://MainActivity?id=coolszy。這時我們可以復寫Activity種的onNewIntent()方法,不熟悉的朋友可以百度了解該方法。我們都知道Activity之間信息的傳遞時通過Intent對象,因此通過該方法中的Intent對象,我們可以獲得請求的路徑,最終獲得請求的參數信息:

@Override protected void onNewIntent(Intent intent) {Uri uri = intent.getData();if (null!=uri){String url = uri.toString();Log.i(TAG, url);int index = url.lastIndexOf("=");if (index!=-1){etParams.setText(url.substring(index+1));}}super.onNewIntent(intent); }

注:如果想讓該方法執行,我們需修改AndroidManifest.xml文件中MainActivity的配置,添加android:lauchMode屬性:

<activity android:name=".MainActivity"android:label="@string/app_name"android:launchMode="singleTask">

此時當我們再次運行模擬器。點擊“打開”按鈕,點擊“啟動Android”鏈接后我們發現我們的回到了MainActivity上,同時也得到了參數。


我們在總結下這個實驗:這個實驗的主要目的是學習如何從瀏覽器種啟動一個Activity,首先我們要給相關的Activity添加一個<intent-filter>,其次通過復寫onNewIntent()方法得到返回信息,如果想要被onNewIntent()調用,我們還行給其Activity添加一個android:lauchMode屬性。

下面我們回歸到本次主題,在OAuth認證第一步種有個oauth_callback參數,作用是認證成功后瀏覽器會被重定向到這個url中,如果我們url設置為http://www.baidu.com,則會定位到http://www.baidu.com,同樣,如果我們把url設置為android://MainActivity,則會定位到android://MainActivity上,如果Activity再加上<intent-filter>,這時MainActivity就可以自動獲取到驗證碼,而不需要我們手動的輸入。

首先,設置我們的oauth_callback參數:

params.add(new Parameter("oauth_callback", encode("android://MainActivity")));

注:android://MainActivity之所以使用encode()是應為我在測試時發現當我們傳遞的url包含有“:”、“//”等符號會返回401錯誤,因此在這里進行encode()

其次,修改AndroidManifest.xml文件中MainActivity配置:

<activity android:name=".MainActivity"android:label="@string/app_name"android:launchMode="singleTask"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter><intent-filter><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><data android:scheme="android" android:host="MainActivity" /> </intent-filter> </activity>

同時給復寫MainActivityonNewIntent()方法,用于接收傳遞過來的參數信息:

@Overrideprotected void onNewIntent(Intent intent){super.onNewIntent(intent);Uri uri = intent.getData();String url = uri.toString();Log.i(TAG, url);int index = url.lastIndexOf("=");if (index!=-1){txtVerifier.setText(url.substring(index+1));}}

至此我們的程序就能自動的獲取驗證碼,而不需要用戶手動的輸入。

?

課程下載地址:http://u.115.com/file/dn43kklr

文檔下載地址:http://download.csdn.net/source/3430433

源碼下載地址:http://u.115.com/file/aq2vc8m4

總結

以上是生活随笔為你收集整理的7.腾讯微博Android客户端开发——自动获取验证码(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。