android系统提供接口实现代码控制热点开关

设置中有控制热点的开关,并且有相关的类型和密码设置,但如何通过api在第三方app开发中控制呢?android 9.0的api为了安全,并不允许除systemuid之外的app控制热点,
android 代码设置、打开wifi热点及热点的连接
以上blog也仅对android 5.1有效。

那只能通过系统提供对外接口,然后在设置中进行控制,接口形式为广播:

Index: frameworks/base/services/core/java/com/android/server/am/BroadcastQueue.java
===================================================================
--- frameworks/base/services/core/java/com/android/server/am/BroadcastQueue.java	(版本 4616)
+++ frameworks/base/services/core/java/com/android/server/am/BroadcastQueue.java	(版本 4619)
@@ -116,6 +116,7 @@
 
         sBackgroundActionWhiteListArraySet.add("com.android.action.LOCATION_STATE");
+        sBackgroundActionWhiteListArraySet.add("android.intent.action.HOTSPOT_STATE_CHANGED"); // @ + for BUG #
     }
 
Index: packages/apps/Settings/AndroidManifest.xml
===================================================================
--- packages/apps/Settings/AndroidManifest.xml	(版本 4616)
+++ packages/apps/Settings/AndroidManifest.xml	(版本 4619)
@@ -3485,6 +3485,7 @@
                 <action android:name="com.android.action.GET_FIRST_DATA_NETWORK" />
                 <action android:name="com.android.action.SWITCH_FIRST_DATA_NETWORK" />
+                <action android:name="android.intent.action.HOTSPOT_STATE_CHANGED" /> <!-- @ + for BUG # -->
             </intent-filter>
         </receiver> 
 
Index: packages/apps/Settings/src/com/android/settings/BootCompleteReceiver.java
===================================================================
--- packages/apps/Settings/src/com/android/settings/BootCompleteReceiver.java	(版本 4616)
+++ packages/apps/Settings/src/com/android/settings/BootCompleteReceiver.java	(版本 4619)
@@ -16,10 +16,15 @@
 
 package com.android.settings;
 
+import static android.net.ConnectivityManager.TETHERING_WIFI;
+
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
+import android.net.ConnectivityManager;
+import android.net.wifi.WifiManager;
 import android.os.Bundle;
+import android.os.Looper;
 import android.util.Log;
 import java.io.IOException;
 import android.app.AlertDialog;
@@ -731,5 +736,23 @@
 	   thr.start();        
     }
-    
+
+    // @ + for BUG # {
+    void startTether() {
+        mConnectivityManager.startTethering(TETHERING_WIFI, true /* showProvisioningUi */,
+                mOnStartTetheringCallback, new Handler(Looper.getMainLooper()));
+    }
+
+    void stopTether() {
+        mConnectivityManager.stopTethering(TETHERING_WIFI);
+    }
+
+    final ConnectivityManager.OnStartTetheringCallback mOnStartTetheringCallback =
+            new ConnectivityManager.OnStartTetheringCallback() {
+                @Override
+                public void onTetheringFailed() {
+                    super.onTetheringFailed();
+                }
+            };
+    // @ + for BUG # }
 }

以上功能仅支持对开关的控制,如果要设置ssid和密码,需要通过反射wifimanager的setWifiApConfiguration方法。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值