调用API设置安卓手机的Access Point

最近在做一个小的应用,需要通过程序设置安卓手机的AP(Access point, 即将手机变为一个移动热点,其他机器能够通过wifi连接到此手机)。原以为很简单的一个东西,还是花费了一番周折,最终还是搞定了。

配置AP的选项是属于配置wifi的一部分,所以他们都在WifiManager这个类中。
获取当前系统的WifiManager实例的方法是:

1
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);

此类中有几个关键方法用来设置AP,但是它们都是被隐藏的,我们无法直接调用,所以只有通过反射的方式来调用。

获取AP当前状态的方法是:

1
2
3
4
private Boolean getApState(WifiManager wifi) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {
        Method method = wifi.getClass().getMethod("isWifiApEnabled");
        return (Boolean) method.invoke(wifi);
    }

配置AP要使用到WifiConfiguration这个类,以下是设置的一个AP。

1
2
3
4
5
6
7
8
9
10
11
12
private WifiConfiguration getApConfiguration() {
        WifiConfiguration apConfig = new WifiConfiguration();
        //配置热点的名称
        apConfig.SSID = "yourId";
        apConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
        apConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
        apConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
        apConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
        //配置热点的密码
        apConfig.preSharedKey = "yourPassword";
        return apConfig;
    }

应用AP配置并启用AP要使用另一个被隐藏的方法setWifiApEnabled需要注意的是启用AP前要将当前手机的wifi关闭,否则会启动失败。

1
2
3
4
5
6
7
8
9
    private void setWifiAp() {

        Method method = wifi.getClass().getMethod(
                "setWifiApEnabled", WifiConfiguration.class, Boolean.TYPE);

        wifi.setWifiEnabled(false);
        method.invoke(wifi, null, true);
    }

最后,一定要注意要在AndroidManifest.xml文件中设置几个权限。否则在调用API时会产生java.lang.SecurityException: Permission Denied的异常。
需要加入的权限如下:

1
2
3
4
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />

源码我已经放置到github上了,需要的请自行checkout。地址是:https://github.com/huangbowen521/APSwitch

时间: 2024-11-01 14:28:39

调用API设置安卓手机的Access Point的相关文章

安卓手机点击恢复出厂设置

问题描述 安卓手机点击恢复出厂设置 安卓手机点击恢复出厂设置的清除全部内容按键有时要等一分钟才有反应,有时马上就有反应,是怎么问题?请教我在安卓源码中解决这一问题. 解决方案 海尔HC-C60恢复出厂设置与手机上网设置手机恢复出厂设置数据怎么恢复

联想安卓手机如何恢复出厂设置

安卓2.0系统操作步骤 提示:恢复出厂设置会清空手机内置的数据,所以请您提前备份好个人资料. 1. 在"主界面"点击下方"应用程序菜单"进入"应用程序列表"如图1-1: 图1-1 2. 在"应用程序列表"找到并点击"系统设置",如图1-2所示: 图1-2 3. 进入"系统设置"菜单后,点击"隐私权",然后点击"恢复出厂设置",如图1-3到1-4所示

api-C#调用API怎么设置操作系统的短时间格式和获取短时间格式?

问题描述 C#调用API怎么设置操作系统的短时间格式和获取短时间格式? DllImport("kernel32.dll", EntryPoint = "GetSystemDefaultLCID")] public static extern int GetSystemDefaultLCID(); [DllImport("kernel32.dll", EntryPoint = "SetLocaleInfoA")] public

安卓如何调用api,有key的那种

问题描述 安卓如何调用api,有key的那种 我做一个天气app ,找了一个网站提供api服务,还有key ,如何连接 解决方案 这个每个api不一样,提供api服务的网站基本上都会有使用说明的,仔细找找看 解决方案二: 具体要看api的文档,但是据我所知,天气预报api有很多选择,google下就有很多,有些根本不要什么key,你为什么不同.

安卓手机数据难清除 恢复出厂设置也没用

7月9日,如今人们对于手机越来越"喜新厌旧",而拿到新手机之后把旧手机送人或放到网上出售也是再正常不过的事情--当然,大多数人都会在旧手机转手之前把它刷成出厂设置,但是这样就能把个人数据清除得一干二净吗?http://www.aliyun.com/zixun/aggregation/16449.html">CNET网站日前告诉我们一个可怕的真相:即便你把安卓手机刷成出厂设置,别人也照样有可能借助现成的软件找回你的个人隐私数据. 安全软件提供商Avast做了一个试验:在网

安卓手机省电设置图文教程

智能手机时代,续航问题一直是让人头疼的问题.由于智能手机屏幕越做越大.手机硬件性能越来越好,尽管电池也在不断增加容量,但是也难以赶上硬件提 升导致功耗增加的速度,很多朋友智能手机电池使用不到半天就需要充电,甚至达到一天两充或者多充的地步.那么智能手机电池掉电快该怎么办?下面就为大家带 来一些安卓手机在使用中的省电小技巧,不敢说能帮大家完全解决问题,至少对大多数人会起到一些作用.(以下操作均以中兴红牛V5操作为例,其他安卓手机均可参照)1.调整手机声音设置(1)关闭系统按键音在拿到新买到的手机时,

安卓手机连接电脑上网设置方法图解

这里介绍的只是android系统手机了,其它系统手机不能使用此方法,因为使用此工具需要有root权限. 安卓手机连接电脑上网必备条件 1.一台可以上网的电脑,并且是windows系统 2.手机要有Root权限了 3.安卓手机一台并且有数据线一根了. 连接电脑上网设置 1.保持手机和PC用USB连接的状态(不要选择U盘模式,并关闭豌豆荚等PC端同步软件),下载前文提供的文件并解压缩,将Tracetool service.apk安装至手机,运行后点击"Ip Tables"按钮,在弹出的对话

安卓手机解屏幕锁怎么设置

安卓手机解屏幕锁设置 打开设置,进入位置与安全 选择设置屏幕锁定,然后选择图案 然后绘制解锁图案,重复两次绘制,可以按自己的要求绘制,不过自己要牢记哦 确认后,就已经设置好了哦,回到主界面,然后锁屏试试 很简单方便吧,比输入密码要便捷的多了,也很实用的哦 幕锁忘了怎么办 如果你的手机是图案锁忘记了,那么你要先确定一下这个图案锁是手机内自带的,还是你自己个人下载的,如果是自带的就需要工具解锁,如果是个人下载的,那么你只需要在"91助手"或"豌豆荚"软件中卸载这个程序即

安卓手机进入recovery模式?手机进入recovery模式恢复出厂设置

在使用recovery恢复出厂设置之前我们对手机中数据进行数据备份吧,包括,联系人,电话,短信等等(推荐阅读:三星安卓手机数据备份的方法图解) 1. 下面我以联想手机为例子,我们先关机,然后长按如下图所示的"电源键.音量+.音量-"(同时按下) 2. 等待手机的屏幕亮后松开按键,我们就可以进入到手机recovery界面了,如果没有成功重复第一步即可: 进入recovery模式之后,如果您想双清恢复系统或是双清清除锁屏密码,请提前做好手机上个人数据的备份工作. 1. 因入到了recove