安卓手機APP開發__網絡連接性支持VPN

安卓手機APP開發__網絡連接性支持VPN

安卓提供了API給開發者,來創建一個虛擬的私有網絡(VPN)的解決方案.
根據這里的介紹,你能知道如何開發和測試你的針對安卓設備的VPN的客戶端.

概述

VPN允許設備為了安全地連接網絡,而沒有物理性的連接在一個網絡上.

安卓包括了一個內嵌的(PPTP 和 L2TP/IPSec)VPN客戶端,它有時也叫
legacy VPN. 安卓4.0(API級別是14)引入了API,讓APP的開發者能夠提供
他們自己的VPN解決方案.你打包你的VPN解決方案進入你的APP。開發者
通常構建一個VPN的APP,是因為如下理由之一:

提供內嵌的客戶端不支持的VPN協議
幫助用戶更容易地連接到VPN服務。

接下來解釋如何開發VPN的APP,不包括內嵌的VPN客戶端。

用戶體驗

安卓提供了一個用戶界面,幫助用戶配置和開啟和停止你的VPN解決方案。系統的用戶界面
也讓人能夠使用設備連接一個活躍的VPN連接。安卓顯示了VPN連接的如下的用戶組件:

在一個VPN的APP首次激活之前,系統顯示了一個連接請求對話框。對話框提示
用戶使用設備時確認他們信任VPN并且接受請求。
VPN的設置屏幕(設置〉網絡&互聯網〉VPN)顯示了用戶接受的連接請求的是哪一個
VPN的APP。這里有一個按鈕是配置系統選項或者是忘記VPN。
當一個連接是活躍的時候,快速配置顯示了一個信息面板。觸摸標簽,顯示一個對話框
有更多的信息和對一個鏈接的設置.
在狀態欄包括了一個VPN的圖標,來顯示一個活躍的連接。

你的APP也需要提供一個用戶界面,讓用戶使用設備來配置你的服務的選項。
例如,你的解決方案,可能需要捕捉帳戶的授權設置。APP應該顯示如下的用戶界面:

控制手動地開啟和停止一個連接。當需要的時候,總是在線的VPN能夠連接.
但是,在用戶第一次使用VPN時,允許用戶配置連接.

當服務活躍的時候,有一個非打擾的通知。通知能顯示連接狀態或者是提供網絡統計信息
的更多的內容。觸摸通知,讓你的APP來到前臺。當服務變成不活躍時,移除通知。


VPN服務

你的APP為了一個用戶連接系統網絡到一個VPN的網關。每個用戶能運行一個不同的VPN的
APP。你創建一個VPN服務,系統使用這個服務來啟動和停止你的VPN,并且跟蹤連接的狀態
你的VPN服務是從VpnService繼承下來的。

服務作為你的VPN的網絡連接的容器和它們的本地的設備的接口。你的服務的實例
調用了VpnService.Builder方法來建立一個新的本地接口。

你的APP把如下的數據從連接的設備傳到VPN的網關:

從本地的接口讀取要轉出的IP的數據包,加密它們,把它們發送給VPN網關。
從本的的接口寫入要進入的數據包(從VPN網關接收并且解密)

重要的提示信息:當和VPN的網關進行交換數據包時,你的APP必須使用強加密手段

對于一個用戶而言僅有一個活躍的服務。開始一個新的服務,自動地停止原有的服務。


添加一個服務

為了在你的APP中添加一個VPN服務,創建一個安卓服務,它是繼承于VpnService。
在你的配置文件中聲明一個VPN服務。內容如下:

使用BIND_VPN_SERVICE權限來保護服務,這樣僅有系統能綁定到你的服務。
使用"android.net.VpnService"過濾器來廣播你的服務,讓系統能找到你的服務。

這個例子顯示了你能在一個配置文件中,如何聲明一個服務:

<service android:name=".MyVpnService"android:permission="android.permission.BIND_VPN_SERVICE"><intent-filter><action android:name="android.net.VpnService"/></intent-filter>
</service>

現在,你的APP聲明了一個服務,系統能自動地根據需要啟動和停止你的APP的VPN的服務。
例如,當運行著總是在線的VPN時,系統控制著你的服務。


準備一個服務

為了準備APP變成用戶的當前的VPN服務,調用VpnService.prepare()。
如果用戶使用設備沒有對你的APP授予權限,這個方法返回一個活動的憑證,
你能使用這個憑證來開啟一個系統的活動,這個活動來向用戶請求權限。
系統顯示一個對話框,這與其它的權限對話框是類似的,例如,照相機或者
通訊錄讀取。如果你的APP已經準備好了,方法就返回一個空值。

僅有一個APP能成為當前已經準備好的VPN服務。總是要調用VpnService.prepare()方法,
因為一個用戶可能設置一個不同的APP作為VPN的服務。為了了解更多的內容,看服務生命
周期部分。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13878.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13878.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13878.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【無重復字符的最長子串】python,滑動窗口+哈希表

滑動窗口哈希表 哈希表 seen 統計&#xff1a; 指針 j遍歷字符 s&#xff0c;哈希表統計字符 s[j]最后一次出現的索引 。 更新左指針 i &#xff1a; 根據上輪左指針 i 和 seen[s[j]]&#xff0c;每輪更新左邊界 i &#xff0c;保證區間 [i1,j] 內無重復字符且最大。 更新結…

使用JSDOM安全截斷文章HTML內容

在Web開發中&#xff0c;經常需要處理大量的HTML內容&#xff0c;尤其是在展示文章預覽、動態加載內容或限制顯示長度等場景中。直接截斷HTML字符串可能會導致頁面布局混亂、樣式錯誤或標簽不完整等問題。為了安全地截斷HTML內容&#xff0c;我們可以利用jsdom庫來解析HTML&…

JVM學習-垃圾回收器(一)

垃圾回收器 按線程數分類 串行垃圾回收器 串行回收是在同一時間段內只允許有一個CPU用于執行垃圾回收操作&#xff0c;此時工作線程被暫停&#xff0c;直至垃圾收集工作結束 在諸如單CPU處理器或者較小的應用內存等硬件平臺不是特別優越的場合&#xff0c;串行回收器的性能表…

http和https的區別,怎么免費實現https(內涵教學)

超文本傳輸協議HTTP協議被用于在Web瀏覽器和網站服務器之間傳遞信息&#xff0c;HTTP協議以明文方式發送內容&#xff0c;不提供任何方式的數據加密&#xff0c;如果攻擊者截取了Web瀏覽器和網站服務器之間的傳輸報文&#xff0c;就可以直接讀懂其中的信息&#xff0c;因此&…

etcd 和 MongoDB 的混沌(故障注入)測試方法

最近在對一些自建的數據庫 driver/client 基礎庫的健壯性做混沌&#xff08;故障&#xff09;測試, 去驗證了解業務的故障處理機制和恢復時長. 主要涉及到了 MongoDB 和 etcd 這兩個基礎組件. 本文會介紹下相關的測試方法. MongoDB 中的故障測試 MongoDB 是比較世界上熱門的文…

AI網絡爬蟲:批量爬取電視貓上面的《慶余年》分集劇情

電視貓上面有《慶余年》分集劇情&#xff0c;如何批量爬取下來呢&#xff1f; 先找到每集的鏈接地址&#xff0c;都在這個class"epipage clear"的div標簽里面的li標簽下面的a標簽里面&#xff1a; <a href"/drama/Yy0wHDA/episode">1</a> 這個…

速盾:負載均衡能防ddos攻擊嗎?

負載均衡是一種分布式系統的設計思想&#xff0c;通過將流量分散到多個服務器上&#xff0c;以提高系統的穩定性和可擴展性。然而&#xff0c;負載均衡本身并不能完全防止DDoS攻擊&#xff0c;但可以在一定程度上減輕其影響。 DDoS&#xff08;分布式拒絕服務&#xff09;攻擊…

【C語言】8.C語言操作符詳解(1)

文章目錄 1.操作符的分類2.?進制和進制轉換3.原碼、反碼、補碼4.移位操作符4.1 左移操作符4.2 右移操作符 5.位操作符&#xff1a;&、|、^、~5.1 &&#xff1a;按位與5.2 |&#xff1a;按位或5.3 ^&#xff1a;按位異或5.4 ~&#xff1a;按位取反5.5 例題例題1例題2例…

短視頻矩陣系統4年獨立開發正規代發布接口源碼搭建部署開發

1. 短視頻矩陣源碼技術開發要求及實現流程&#xff1a; 短視頻矩陣源碼開發要求具備視頻錄制、編輯、剪輯、分享等基本功能&#xff0c;支持實時濾鏡、特效、音樂等個性化編輯&#xff0c;能夠實現高效的視頻渲染和處理。開發流程主要包括需求分析、技術選型、設計架構、編碼實…

Web前端開發技術、詳細文章、(例子)html 列表、有序列表、無序列表、列表嵌套

目錄 列表概述 列表類型與標記符號 無序列表 語法&#xff1a; 語法說明&#xff1a; 無序列表標記的 type 屬性及其說明 代碼解釋 有序列表 基本語法 屬性說明 1、列表 o1標記的屬性 2、列表項li標記的屬性 有序列表 o1標記的屬性、值 代碼解釋 列表嵌套 基本…

如何將Qt pro工程文件 改成CMakeLists.txt

Qt pro工程管理文件&#xff0c;本人認為是很好用的&#xff0c;語法簡潔易懂&#xff0c;但是只能在QtCreator中使用&#xff0c;想用使用其它IDE比如Clion或者vs&#xff0c;CMakeLists是種通用的選擇&#xff0c;另外QtCreator的調試功能跟粑粑一樣。 一&#xff0c;思路 …

FreeBSD/Linux下的系統資源監視器排隊隊

bpytop bpytop 是一個基于 Python 的資源監視器&#xff0c;可以在 FreeBSD 上使用。它提供了對文件寫入磁盤、網絡、CPU 和內存占用的監視功能。 pkg install bpytop 或者用ports安裝 cd /usr/ports/sysutils/bpytop/ make install clean bashtop bashtop 也是一個基于 P…

化簡資源分配圖判斷是否發生死鎖

目錄 1.資源分配圖的概念 2.判斷是否發生死鎖 1.資源分配圖的概念 資源分配圖表示進程和資源之間的請求關系&#xff0c;例如下圖&#xff1a; P代表進程&#xff0c;R代表資源&#xff0c;R方框中 有幾個圓球就表示有幾個這種資源&#xff0c;在圖中&#xff0c;R1指向P1&a…

C++ RPC ORM 高速解析

支持所有常用編程語 https://capnproto.org/GitHub - capnproto/capnproto: Capn Proto serialization/RPC system - core tools and C library https://capnproto.org/capnproto-c-win32-1.0.2.zip 常用命令&#xff1a; capnp help capnp compile -oc myschema.capn…

java文件上傳時給pdf、word、excel、ppt、圖片添加水印

前言 在開發的過程中&#xff0c;因為文件的特殊性&#xff0c;需要給pdf、word、excel、ppt、圖片添加水印。添加水印可以在文件上傳時添加&#xff0c;也可以在文件下載時添加。因為業務的某些原因&#xff0c;文件需要在瀏覽器預覽&#xff0c;如果用戶將文件另存為則無法添…

算法與數據結構匯總

基本 數組 字符串 排序 矩陣 模擬 枚舉 字符串匹配 桶排序 計數排序 基數排序 回文&#xff1a;中心擴展 馬拉車 樹上啟發式合并 括號 數學表達式 字符串&#xff1a;前后綴分解。 貢獻法 分組&#xff1a; 【狀態機dp 狀態壓縮 分組】1994. 好子集的數目 【動態規劃】【前綴…

Excel中sum的跨表求和

#實際工作中&#xff0c;一個xlsx文件中會包含多個Excel表格&#xff0c;一般會有“總-分”的關系&#xff0c;如何把分表里的數字匯總到總表里呢&#xff1f; 一般有上圖所示的兩種表達方式。 可以使用通配符 *&#xff1a;代表任意個數、任意字符&#xff1b; &#xff1f;&…

51單片機的最小系統詳解

51單片機的最小系統詳解 1. 引言 在嵌入式系統中,51單片機被廣泛應用于各種小型控制器和嵌入式開發板中。相信很多人都接觸過51單片機,但是對于51單片機的最小系統卻了解得不夠深入。本文將從振蕩電路、電源模塊、復位電路、LED指示燈和調試接口五個方面詳細介紹51單片機的…

quartz定時任務

Quartz 數據結構 quartz采用完全二叉樹&#xff1a;除了最后一層每一層節點都是滿的&#xff0c;而且最后一層靠左排列。 二叉樹節點個數規則&#xff1a;每層從左開始&#xff0c;第一層只有一個&#xff0c;就是2的0次冪&#xff0c;第二層兩個就是2的1次冪&#xff0c;第三…

DOS學習-目錄與文件應用操作經典案例-attrib

新書上架~&#x1f447;全國包郵奧~ python實用小工具開發教程http://pythontoolsteach.com/3 歡迎關注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目錄 一.前言 二.使用 三.案例 一.前言 DOS系統中的attrib命令是一個用于顯示或更改文件&#…