当前位置: 首页 > news >正文

安卓手机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的服务。为了了解更多的内容,看服务生命
周期部分。

相关文章:

安卓手机APP开发__网络连接性支持VPN

安卓手机APP开发__网络连接性支持VPN 安卓提供了API给开发者,来创建一个虚拟的私有网络(VPN)的解决方案. 根据这里的介绍,你能知道如何开发和测试你的针对安卓设备的VPN的客户端. 概述 VPN允许设备为了安全地连接网络,而没有物理性的连接在一个网络上. 安卓包括了一个内嵌的…...

Shopee单个商品详情采集

Shopee商品详情页数据采集实战 作为东南亚地区最大的电商平台之一,Shopee拥有超过3亿活跃用户。对于跨境电商企业、市场分析师等角色而言,从Shopee获取商品数据是非常有价值的。本文将介绍如何使用Python程序采集Shopee单个商品详情页数据。 1. 确定采集目标和技术方案 确定…...

深入研究Qt Meta - Object System

目录 先说RTTI 再说QMeta Object System 关于Q_OBJECT 这篇文章我打算研究一下QMetaObject System&#xff0c;也就是Qt自己构建起来的元对象系统。 先说RTTI 啥是RTTI&#xff1f;这是C编程里的一个常见术语&#xff0c;全称是&#xff1a;运行阶段类型识别&#xff08;Ru…...

web学习笔记(五十八)

目录 1. v-model 双向数据绑定 2. 事件修饰符 3. 路径别名 4. setup语法糖 4.1 语法糖的概念 4.2 setup语法糖 5. 配置代理服务器 1. v-model 双向数据绑定 v-model 双向数据绑定只能使用在表单标签&#xff1b; v-model双向数据绑定原理&#xff1a;采用 Object.de…...

精准安全运维,统信UOS服务器版V20(1070)漏洞修复指南丨年度更新

随着信息安全威胁的不断升级&#xff0c;操作系统的安全性已成为企业运维的关键要素。 为了确保业务运行环境的安全无忧&#xff0c;统信软件持续致力于技术创新和优化&#xff0c;并于日前重磅推出了统信UOS服务器版V20&#xff08;1070&#xff09;。该系统提供了高频补丁更…...

Vue3实战笔记(46)—Vue 3高效开发定制化Dashboard的权威手册

文章目录 前言Dashboard开发总结 前言 后台管理系统中的Dashboard是一种图形化的信息显示工具&#xff0c;通常用于提供一个特定领域或系统的概况。它可以帮助用户监控和分析数据&#xff0c;快速获取重要信息。可以帮助用户监控业务状况、分析数据、获取关键信息和管理资源。…...

MySQL为什么会选错索引

有的时候&#xff0c;我们加了索引&#xff0c;也不一定最终查询语句就能用上索引&#xff0c;因为Innodb要不要使用索引&#xff0c;该使用哪个索引是优化器决定的&#xff0c;它是根据成本&#xff08;代价&#xff09;预估来选择的&#xff0c;他会倾向于选择一个成本最低的…...

kafka调优参考建议 —— 筑梦之路

这里主要是从不同使用场景来调优&#xff0c;仅供参考。 吞吐量优先 吞吐量优先使用场景如采集日志。 1. broker配置调优 num.partitions&#xff1a;分区个数&#xff0c;设置为与消费者的线程数基本相等 2. producer配置调优 batch.size 批量提交消息的字节数&#xff0c;…...

Redis(十三) 事务

文章目录 前言事务的特性Redis事务的执行原理Redis中使用事务WATCH UNWATCH实现乐观锁 前言 前面我们学习 MySQL 的时候&#xff0c;肯定也学习了事务。事务是什么&#xff1f;给大家举个例子&#xff1a;假如我给朋友微信转账&#xff0c;我给他转了 100 块钱&#xff0c;当我…...

RK 11.0 多屏模式下修改鼠标进入方式

要求&#xff1a;主屏在左&#xff0c;副屏在右。这种排列情况下鼠标仅可通过主屏的最右侧移入副屏的最左侧&#xff0c;或从副屏的最左侧移入主屏最右侧。 1.RK默认设计 1.1 RK的代码设计是当sys.mouse.presentation1时&#xff0c;鼠标在屏幕边缘的时候就会移入另一个屏幕 …...

​​​【收录 Hello 算法】10.4 哈希优化策略

目录 10.4 哈希优化策略 10.4.1 线性查找&#xff1a;以时间换空间 10.4.2 哈希查找&#xff1a;以空间换时间 10.4 哈希优化策略 在算法题中&#xff0c;我们常通过将线性查找替换为哈希查找来降低算法的时间复杂度。我们借助一个算法题来加深理解。 Question 给…...

浅析部署架构中的GZone、RZone和CZone

在现代软件开发中&#xff0c;理解和应用各种技术概念是成功的重要因素。本文将详细介绍GZone、RZone和CZone三个概念&#xff0c;解释它们的定义、特点、功能及应用场景&#xff0c;并通过实际案例帮助读者更好地理解这些概念。 一、GZone 1.1 定义 GZone是指“Global Zone…...

【全开源】分类记账小程序系统源码(ThinkPHP+FastAdmin+UniApp)

基于ThinkPHPFastAdminUniAppvk-uView-uiVue3.0开发的一款支持多人协作的记账本小程序&#xff0c;可用于家庭&#xff0c;团队&#xff0c;组织以及个人的日常收支情况记录&#xff0c;支持周月年度统计。 &#xff1a;智能管理您的财务生活 一、引言&#xff1a;财务智能化…...

Android NDK系列(四)NDK的编译

Native工程一般会用到NDK&#xff0c;一般开发者使用的NDK是官方提供的&#xff0c;直接下载即可使用。在工作过程中一般很少要定义NDK&#xff0c;不过对于想了解NDK是怎么生成的&#xff0c;可以继续往下阅读。 Google提供了编译NDK的说明文档&#xff0c;地址为NDK编译&…...

Jenkins--从入门到入土

Jenkins–从入门到入土 文章目录 Jenkins--从入门到入土〇、概念提要--什么是CI/DI&#xff1f;1、CI&#xff08;Continuous Integration&#xff0c;持续集成&#xff09;2、DI&#xff08;DevOps Integration&#xff0c;DevOps 集成&#xff09;3、解决的问题 一、Jenkins安…...

文心一言 VS 讯飞星火 VS chatgpt (267)-- 算法导论20.2 2题

二、写出 PROTO-vEB-DELETE 的伪代码。通过扫描簇内的相关位&#xff0c;来更新相应的 summary 位。并且你实现的伪代码的最坏情况运行时间是多少&#xff1f;如果要写代码&#xff0c;请用go语言。 文心一言&#xff1a; 首先&#xff0c;让我们回顾一下vEB&#xff08;Van …...

C 语言设计模式(结构型)

文章目录 代理模式场景示例 门面模式场景示例 桥接模式场景示例 适配器模式场景示例 外观模式场景示例 享元模式场景示例 装饰器模式场景示例 组合模式场景示例 代理模式 C语言中&#xff0c;代理模式通常用于实现对象的间接访问。代理模式是一种结构型设计模式&#xff0c;它…...

【云原生--K8S】K8S python接口研究

文章目录 前言一、搭建ubuntu运行环境1.运行ubuntu容器2.拷贝kubeconfig文件二、python程序获取k8s信息1.获取node信息2.获取svc信息3.常用kubernetes API总结前言 在前面的文章中我们都是通过kubectl命令行来访问操作K8S,但是在实际应用中可能需要提供更方便操作的图形化界面…...

5.26作业

服务器 2 3 #define BUFSIZE 10244 #define login_msg_len 205 6 typedef struct Node{7 char name[login_msg_len];8 struct sockaddr_in addr;9 struct Node *next;10 }Node;11 12 typedef struct Msgtype{13 char type;14 char username[login_msg_len]…...

链接库文件体积优化工具篇:bloaty

笔者之前参与过一个嵌入式智能手表项目&#xff0c;曾经碰到过这样一个问题&#xff1a;手表的flash大小只有2M&#xff0c;这意味着只能在上面烧录2M大小的代码。随着开发不断进行&#xff0c;代码越写越多&#xff0c;编译出来的bin也越来越大。最后bin大小超过了2M, 就没法烧…...

ARM交叉编译避坑指南:搞懂-mfloat-abi参数,告别ABI不兼容的诡异错误

ARM交叉编译避坑指南&#xff1a;搞懂-mfloat-abi参数&#xff0c;告别ABI不兼容的诡异错误 在嵌入式开发领域&#xff0c;ARM架构的交叉编译是每个工程师的必修课。但当你信心满满地配置好工具链&#xff0c;执行make命令时&#xff0c;突然跳出的fatal error: gnu/stubs-soft…...

避坑指南:处理通达信5分钟数据.lc5文件时你可能遇到的5个问题(Python解决方案)

避坑指南&#xff1a;处理通达信5分钟数据.lc5文件时你可能遇到的5个问题&#xff08;Python解决方案&#xff09; 在金融数据分析领域&#xff0c;通达信的.lc5文件是存储5分钟级别行情数据的重要格式。许多量化交易者和数据分析师在处理这类文件时&#xff0c;往往会遇到一些…...

TranslucentTB:轻量级Windows任务栏个性化解决方案

TranslucentTB&#xff1a;轻量级Windows任务栏个性化解决方案 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 项目价值&#xff1a;重新…...

Wan2.2-I2V-A14B企业部署方案:对接Jenkins实现AI视频CI/CD自动化流程

Wan2.2-I2V-A14B企业部署方案&#xff1a;对接Jenkins实现AI视频CI/CD自动化流程 1. 方案概述 在当今内容创作和数字营销领域&#xff0c;视频内容的需求呈现爆发式增长。Wan2.2-I2V-A14B文生视频模型为企业提供了一种高效的内容生产方式&#xff0c;而将其集成到CI/CD流程中…...

biliup故障定位与修复指南:从入门到进阶

biliup故障定位与修复指南&#xff1a;从入门到进阶 【免费下载链接】biliup 自动直播录制、投稿、twitch、ytb频道搬运工具。命令行投稿(B站)和视频下载工具&#xff0c;提供多种登录方式&#xff0c;支持多p。 项目地址: https://gitcode.com/gh_mirrors/bi/biliup 一…...

VideoAgentTrek-ScreenFilter艺术化过滤效果:将敏感区域替换为创意图案而非简单模糊

VideoAgentTrek-ScreenFilter艺术化过滤效果&#xff1a;将敏感区域替换为创意图案而非简单模糊 最近在折腾视频内容处理时&#xff0c;我发现了一个挺有意思的新玩法。传统的视频敏感信息处理&#xff0c;比如给人脸打码、给车牌模糊&#xff0c;总是显得有点生硬&#xff0c…...

OpenClaw敏感数据处理:Qwen3-32B私有镜像的加密通信方案

OpenClaw敏感数据处理&#xff1a;Qwen3-32B私有镜像的加密通信方案 1. 为什么需要加密通信方案 上周帮朋友部署OpenClaw自动化财务对账流程时&#xff0c;遇到一个棘手问题&#xff1a;当系统自动处理银行流水和发票PDF时&#xff0c;这些敏感数据在传输过程中竟然以明文形式…...

项目建议书、可研报告与初步设计方案的定位与关联

在信息化项目建设过程中&#xff0c;项目建议书、可行性研究报告&#xff08;以下简称“可研报告”&#xff09;和初步设计方案是前期工作阶段最为核心的三份文件&#xff0c;它们共同构成了项目从构想到落地的决策链条&#xff0c;承担着不同阶段的论证与规划职责。然而实际工…...

云南塑料管公司哪家好

在云南&#xff0c;塑料管行业面临着诸多挑战&#xff0c;这些问题严重影响了工程质量和使用体验。行业痛点凸显塑料管的地域适配性差、产品品质参差不齐、性价比失衡、服务不完善以及供应链不稳定是当前行业普遍面临的难题。云南山区多、昼夜温差大、雨季漫长且软土地基普遍&a…...

【标准差 | 平方差 | 均方差】

标准差 标准差差方差针对数据时总体数据的样本数时 标准差 标准差&#xff08;Standard Deviation&#xff09;&#xff0c;又称均方差&#xff0c;但不同于均方误差&#xff08;mean squared error&#xff09; 标准差是数值分散的测量。 标准差的符号是 σ &#xff08;希腊语…...