⑴ linux 和 android都是開源的那麼騰訊qq軟體開源了嗎 從哪裡可以找到qq的源碼啊
QQ是不開源的,原來是對外開放協議和介面的,後來也不開放了。可以找和QQ類似的即時通訊軟體的或者原來QQ的開源版本(都是開源社區的人自己開發的,現在大都不能用了)的源代碼看看,大體思路都差不多的。
⑵ 如何在Android手機中開發QQ賬戶登陸功能
背景
OAUTH開發授權協議,為用戶資源的授權提供了一個安全開放而又簡易的標准。可以使用第三方的賬戶登陸另一個方的應用或服務,而不暴露給另一個應用該賬戶的信息。現在已經得到廣泛的應用,比如我們在互聯網上可以看到很多服務可以通過第三方賬號登錄,這樣既避免了用戶注冊的麻煩,也可以使用第三方的資源。
開發流程
一. QQ登錄目前採用OAuth2.0標准協議來進行用戶身份驗證和獲取用戶授權。整個流程如
下所述,這里比如一個應用A可以使用QQ賬戶登陸。
1. 用戶訪問客戶端的應用,試圖操作用戶存放在服務提供方的資源。比如用戶用QQ賬戶登
錄應用A程序,同時可以獲得用戶昵稱頭像等保存在騰訊伺服器的用戶信息。
2. 輸入QQ賬號後,應用A後向服務提供方(騰訊) (Request Token)。 請求一個臨時令
牌
3. 服務提供方(騰訊)(應用A)的身份後,授予一個臨時令牌。驗證客戶端
4. 客戶端(應用A)獲得臨時令牌後,將用戶引導至服務提供方(騰訊)的授權頁面請求用戶授
權。在這個過程中將臨時令牌和客戶端的回調連接發送給服務提供方(騰訊)。
5. 用戶在服務提供方(騰訊)的網頁上輸入用戶名和密碼,然後授權該客戶端(應用A)訪問所
請求的資源。
6. 授權成功後,服務提供方(騰訊)引導用戶返回到客戶端(應用A)提供的回調頁面。 7. 客戶端(應用A)根據臨時令牌從服務提供方(騰訊)那裡獲取訪問令牌 (Access Token)。 8. 根據訪問令牌 (Access Token)獲得對應用戶身份的openid,
9. 然後客戶端(應用A)根據訪問令牌 (Access Token)與openid調用OpenAPI,來請求訪問
或修改用戶授權的資源(比如昵稱用戶頭像等經過用戶授權的信息)。
10.拿到訪問令牌 (Access Token)之後,客戶端(應用A)可以保存起來,下次就不用再向服務
提供方(騰訊)請求授權,直接就可以使用該賬戶授權的資源,相當於保存了用戶名和密碼,但是真正的用戶名和密碼客戶端(應用A)並不知道。
比如一個信息發布的網站,可以使用QQ賬號登錄,用戶通過安全頁面輸入QQ賬號信息後顯示登陸成功,同時詢問用戶是否允許該網站使用用戶的一些信息,比如資料,相冊等,經過用戶確認後該網站可以拿到用戶授權的信息。同時拿到訪問令牌 (Access Token),以後該網站就可以用這個訪問獲得該用戶的這些授權信息,而不需要再次輸入賬戶信息。一般該網站也要提供刪除這個訪問令牌的入口。這樣就可以很方便的把用戶願意提供的信息拿到這個信息發布網站使用,而用戶不需要再次登記錄入。
二.QQ 為Android移動設備開發提供QQ登陸的開發包,對上述的過程進行的封裝,對開發者
來說可以方便的使用。要真正開發一個使用QQ賬戶登錄的App,就需要在騰訊社區開放平台注冊應用,申請對應的appid和appkey,這個開發App時候要用到。 1.可以在騰訊開放API站點下載最新的QQ登錄API庫文件和Demo。
2.下載後的Demo工程如下,導入了庫文件tencent_openap
⑶ 要做一個類似於微信或者QQ的Android、ios的聊天應用,請問伺服器端用什麼技術或開源框架比較好
即時聊天通用的協議是 XMPP,基於這個協議有一套java開源的服務端 openfire,可以快速的搭建一套即時聊天服務端。
但是現在有不少雲即時通訊服務。例如
容聯雲通訊、雲之訊、環信、融雲
這些雲服務提供了api,我們基於他的api開發很容易實現自己的即時聊天軟體。服務端,伺服器都不用我們自己管了,極大的節省了成本和開發周期。而且這些雲服務基礎服務都是免費的。
建議用第三方的雲服務實現。
⑷ Android實現類似qq,微信消息懸浮窗通知
實現方法:(需要開啟懸浮窗通知許可權、允許應用在其他應用上顯示)
懸掛式Notification,他是5.0中新增的,也就是API中的Headsup的Notification,可以在不打斷用戶操作的時候,給用戶通知
注意:在某些rom下使用headsup並不會顯示桌面懸浮窗,而是直接跳轉到相應的界面,親測華為,小米都是這種情況,這種情況下需要自己實現懸浮窗
具體實現:
⑸ 利用 Android 系統原生 API 實現分享功能(2)
在之前的一篇文章 利用 Android 系統原生 API 實現分享功能 中主要說了下實現流程,但具體實施起來其實還是有許多坑要面對。那這篇文章就是提供一個封裝好的 Share2 庫供大家參考。
GitHub 項目地址:Share2
看過上一篇文章的同學應該知道,要調用 Android 系統內建的分享功能,主要有三步流程:
更多相關內容請參考上一篇,這里就不再重復贅述了。
知道大致的實現流程後,其實只要解決下面幾個問題後就可以具體實施了。
這其實是直接決定了最終的實現形態,我們知道常見的使用場景中,只是為了在應用間分享圖片和一些文件,那對於那些只是分享文本的產品而言,兩者實現起來要考慮的問題完全不同。
所以為了解決這個問題,我們可以預先定好支持的分享內容類型,針對不同類型可以進行不同的處理。
在 Share2 中,一共定義了5種類別的分享內容,基本能覆蓋常見的使用場景。在調用分享介面時可以直接指定內容類型,比如像文本、圖片、音視頻、已經其他各種類型文件。
對於不同類別的內容,可能會有不同的來源。比如文本可能就只是一個字元串對象,而對於分享圖片或其他文件,我們需要一個 Uri 來標識一個資源。這其實就引出來具體實施時的一個大問題,如何獲取要分享文件的 Uri,並且這個 Uri 要能被接收分享內容的應用處理才行 。
那麼,如何獲取要分享內容文件的 Uri?如果處理才能讓接收方也能夠根據 Uri 獲取到文件?
我們把文件 Uri 的來源劃分為下面三種類型:
常見場景 :通過文件選擇器獲取一個文件的 Uri
通過這種方式獲取到的 Uri 是由系統 ContentProvider 返回的,在 Android 4.4 之前的版本和之後的版本有較大的區別,我們後面再說怎麼處理。只要先記住這種系統返回給我們的 Uri 就行了。
比如調用系統相機進行拍照或錄制音視頻,要傳入一個生成目標文件的 Uri ,從 7.0 開始我們需要用到 FileProvider 來實現。
如果用到了 FileProvider 就要注意跟系統 ContentProvider 返回 Uri 的區別,比如我們在 Manifest 中對 FileProvider 配置 android:authorities="com.xx.xxx.fileProvider" 屬性,那這時系統返回的 Uri 格式就變成了 : content://com.xx.xxx.fileProvider... ,對於這種類型的 Uri 我們姑且叫 自定義 FileProvider 返回的 Uri ,後面一並說怎麼處理。
我們調用 new File 時需要傳入指定的文件路徑,這個絕對路徑通常是: /storage/emulated/0/... 這種樣式,我們要想調用分享時也要變成 Uri 的形式才可以,那麼如何把文件路徑變成一個文件 Uri ?這個問題下面也一並進行回答。
前面提到了文件 Uri 的三種分類,對應不同類型處理方式也不同,不然你最先遇到的問題就是:
這是由於對系統返回的 Uri 缺失訪問許可權導致,所以要對應用進行臨時訪問 Uri 的授權才行,不然會提示許可權缺失。
對於要分享系統返回的 Uri 我們可以這樣進行處理:
需要注意的是對於自定義 FileProvider 返回 Uri 的處理,即使是設置臨時訪問許可權,但是分享到第三方應用也會無法識別該 Uri
典型的場景就是,我們如果把自定義 FileProvider 的返回的 Uri 設置分享到微信或 QQ 之類的第三方應用,會提示文件不存在,這是因為他們無法識別該 Uri。
關於這個問題的處理其實跟下面要說的把文件路徑變成系統返回的 Uri 一樣,我們只需要把自定義 FileProvider 返回的 Uri 變成第三方應用可以識別系統返回的 Uri 就行了。
創建 FileProvider 時需要傳入一個 File 對象,所以直接可以知道文件路徑,那就把問題都轉換成了: 如何通過文件路徑獲取系統返回的 Uri
下面是根據傳入的 File 對象和類型來查詢系統 ContentProvider 來獲取相應的 Uri,已經按照不同文件類型在不同系統版本下的進行了適配。
其中 forceGetFileUri 方法是通過反射實現的,處理 7.0 以上系統的特殊情況下的兼容性,一般情況下不會調用到。Android 7.0 開始不允許 file:// Uri 的方式在不同的 App 間共享文件,但是如果換成 FileProvider 的方式依然是無效的,我們可以通過反射把該檢測幹掉。
通過 File Path 轉成 Uri 的方式,我們最終統一了調用系統分享時傳入內容 Uri 的三種不同場景,最終全部轉換為傳遞系統返回的 Uri,讓第三方應用能夠正常的獲取到分享內容。
Share2 按照上述方法進行了具體實施,可以通過下面的方式進行集成:
分享圖片到指定界面,比如分享到微信朋友圈
GitHub 項目地址:Share2