ฉันจะเชื่อมต่อกับเครือข่าย Wi-Fi เฉพาะใน Android โดยทางโปรแกรมได้อย่างไร


294

ฉันต้องการออกแบบแอพที่แสดงรายการเครือข่าย Wi-Fi ที่มีอยู่และเชื่อมต่อกับเครือข่ายใดที่ผู้ใช้เลือก

ฉันใช้ส่วนที่แสดงผลการสแกน ตอนนี้ฉันต้องการเชื่อมต่อกับเครือข่ายที่เลือกโดยผู้ใช้จากรายการผลการสแกน

ฉันจะทำสิ่งนี้ได้อย่างไร



สิ่งนี้ใช้ได้สำหรับฉัน WPA2 และ WEP: stackoverflow.com/a/29575563/7337517
Kundan

คำตอบ:


441

คุณต้องสร้างWifiConfigurationตัวอย่างเช่นนี้:

String networkSSID = "test";
String networkPass = "pass";

WifiConfiguration conf = new WifiConfiguration();
conf.SSID = "\"" + networkSSID + "\"";   // Please note the quotes. String should contain ssid in quotes

จากนั้นสำหรับเครือข่าย WEP คุณต้องทำสิ่งนี้:

conf.wepKeys[0] = "\"" + networkPass + "\""; 
conf.wepTxKeyIndex = 0;
conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); 

สำหรับเครือข่าย WPA คุณจะต้องเพิ่มข้อความรหัสผ่านดังนี้:

conf.preSharedKey = "\""+ networkPass +"\"";

สำหรับเครือข่ายแบบเปิดคุณต้องทำสิ่งนี้:

conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);

จากนั้นคุณต้องเพิ่มลงในการตั้งค่าตัวจัดการ wifi ของ Android:

WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE); 
wifiManager.addNetwork(conf);

และสุดท้ายคุณอาจต้องเปิดใช้งานดังนั้น Android จึงเชื่อมต่อกับมัน:

List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for( WifiConfiguration i : list ) {
    if(i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"")) {
         wifiManager.disconnect();
         wifiManager.enableNetwork(i.networkId, true);
         wifiManager.reconnect();               

         break;
    }           
 }

UPD: ในกรณีของ WEP หากรหัสผ่านของคุณเป็น hex คุณไม่จำเป็นต้องล้อมด้วยเครื่องหมายคำพูด


5
มันใช้งานได้ดี! ขอบคุณ :) แต่อีกสิ่งหนึ่งที่ฉันอยากจะถาม คุณไม่จำเป็นต้องตั้งค่าอนุญาตให้ใช้รหัส, อนุญาตอัตโนมัติและอัลกอริทึมอนุญาตหรือไม่? และวิธีตัดสินใจว่าจะตั้งค่าคุณลักษณะเฉพาะใด เช่นคุณตั้ง WEP40 สำหรับ GroupCipher สำหรับเครือข่าย WEP หรือไม่
Vikram Gupta

8
ฉันลืมที่จะพูดถึงสิ่งหนึ่ง ในกรณีของ WEP หากรหัสผ่านของคุณเป็นเลขฐานสิบหกคุณไม่จำเป็นต้องล้อมรอบด้วยเครื่องหมายคำพูด
kenota

8
ขอบคุณสำหรับวิธีแก้ปัญหาที่ดีคุณช่วยอธิบายวิธีการตรวจสอบว่าการเชื่อมต่อสำเร็จหรือไม่ ตัวอย่างเช่นผู้ใช้อาจป้อนรหัสผ่านผิดและควรได้รับการแจ้งเตือน
Pascal Klein

3
ถ้าฮอตสปอต Wifi ที่ต้องการไม่ได้ใช้รหัสผ่านใด ๆ เลย .... เราควรใช้. preSharedKey = null; หรือเราควรตั้ง. preSharedKey = ""; อันไหนที่ถูก? @kenota
gumuruh

6
มันใช้งานไม่ได้สำหรับฉัน: มันเชื่อมต่อโดยตรงกับ wifi ที่จำไว้ก่อนหน้านี้แทนที่จะเชื่อมต่อกับใหม่
Virthuss

138

คำตอบก่อนหน้านี้ทำงานแต่การแก้ปัญหาจริงได้ง่าย ไม่จำเป็นต้องวนลูปผ่านรายการเครือข่ายที่กำหนดค่าเนื่องจากคุณได้รับรหัสเครือข่ายเมื่อคุณเพิ่มเครือข่ายผ่าน WifiManager

ดังนั้นโซลูชันที่สมบูรณ์และเรียบง่ายจะมีลักษณะดังนี้:

WifiConfiguration wifiConfig = new WifiConfiguration();
wifiConfig.SSID = String.format("\"%s\"", ssid);
wifiConfig.preSharedKey = String.format("\"%s\"", key);

WifiManager wifiManager = (WifiManager)getSystemService(WIFI_SERVICE);
//remember id
int netId = wifiManager.addNetwork(wifiConfig);
wifiManager.disconnect();
wifiManager.enableNetwork(netId, true);
wifiManager.reconnect();

1
หากไม่ได้ใช้รหัสผ่าน เราควรใส่. preSharedKey = null; หรือเราควรจะใส่สตริงว่าง @seanloyola?
gumuruh

2
@MuhammedRefaat คุณตัดการเชื่อมต่อในกรณีที่คุณเชื่อมต่อกับเครือข่ายอื่นแล้ว
sean loyola

1
@ gumuruh คุณไม่จำเป็นต้องรวมวัตถุ presharedkey เลยหากไม่จำเป็นต้องใช้รหัส
sean loyola

7
ตาม javadoc ของ enableNetwork ถ้าคุณใช้บูลีน disableOthers จริงคุณก็ไม่จำเป็นต้องตัดการเชื่อมต่อหรือเชื่อมต่อมันจะทำทั้งสองอย่างให้คุณ
NikkyD

12
น่าจะพูดถึงว่าCHANGE_WIFI_STATEจำเป็นต้องได้รับอนุญาต
ThomasW

27

ก่อนที่จะเชื่อมต่อเครือข่าย WIFI คุณต้องตรวจสอบประเภทความปลอดภัยของเครือข่าย WIFI ScanResult ระดับที่มีความสามารถ ฟิลด์นี้ให้ประเภทเครือข่ายของคุณ

อ้างอิง: https://developer.android.com/reference/android/net/wifi/ScanResult.html#capabilities

เครือข่าย WIFI มีสามประเภท

ก่อนอื่นยกตัวอย่างวัตถุ WifiConfiguration และกรอก SSID ของเครือข่าย (โปรดทราบว่าจะต้องอยู่ในเครื่องหมายคำพูดคู่) ตั้งค่าสถานะเริ่มต้นเป็นปิดใช้งานและระบุลำดับความสำคัญของเครือข่าย (ตัวเลขประมาณ 40 ดูเหมือนจะทำงานได้ดี)

WifiConfiguration wfc = new WifiConfiguration();

wfc.SSID = "\"".concat(ssid).concat("\"");
wfc.status = WifiConfiguration.Status.DISABLED;
wfc.priority = 40;

ตอนนี้สำหรับส่วนที่ซับซ้อนมากขึ้น: เราจำเป็นต้องกรอกข้อมูลสมาชิก WifiConfiguration หลายรายเพื่อระบุโหมดความปลอดภัยของเครือข่าย สำหรับเครือข่ายเปิด

wfc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
wfc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
wfc.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
wfc.allowedAuthAlgorithms.clear();
wfc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wfc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
wfc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
wfc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
wfc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
wfc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);

สำหรับเครือข่ายที่ใช้ WEP โปรดทราบว่าคีย์ WEP ยังอยู่ในเครื่องหมายคำพูดคู่

wfc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
wfc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
wfc.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
wfc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
wfc.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
wfc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wfc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
wfc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
wfc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);

if (isHexString(password)) wfc.wepKeys[0] = password;
else wfc.wepKeys[0] = "\"".concat(password).concat("\"");
wfc.wepTxKeyIndex = 0;

สำหรับเครือข่ายที่ใช้ WPA และ WPA2 เราสามารถกำหนดค่าเดียวกันสำหรับทั้ง

wfc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
wfc.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
wfc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
wfc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wfc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
wfc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
wfc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
wfc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
wfc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);

wfc.preSharedKey = "\"".concat(password).concat("\"");

ในที่สุดเราสามารถเพิ่มเครือข่ายไปยังรายการที่รู้จัก WifiManager

WifiManager wfMgr = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
int networkId = wfMgr.addNetwork(wfc);
if (networkId != -1) {
 // success, can call wfMgr.enableNetwork(networkId, true) to connect
} 

หมายเหตุเกี่ยวกับลำดับความสำคัญหมายเลขโทรศัพท์ของฉันประมาณ 4,000 ใช้ได้ น่าจะดีที่สุดเพื่อให้เป็นส่วนหนึ่งที่แบบไดนามิกมากขึ้นเล็ก ๆ น้อย ๆ (ย้ำมีอยู่ configs ฯลฯ )
แซม

ฉันจะได้รับประเภทการรักษาความปลอดภัยเครือข่ายจาก SSID สำหรับ wifi ScanResult ได้อย่างไร
shantanu

@shantanu ตรวจสอบรายละเอียดดังต่อไปนี้ stackoverflow.com/questions/6866153/…
Kalpesh Gohel

บนอุปกรณ์ซัมซุงข้อความรหัสผ่านถูกแฮชสตริง และรหัสไม่ทำงาน คุณตรวจสอบสิ่งนั้นหรือไม่
เหงียนมินห์บินห์

คุณสามารถให้ตัวอย่างเพื่อเชื่อมต่อ EAP ของประเภทซิม wifi ได้หรือไม่
Prashanth Debbadwar

19

มอบเครดิตให้แก่ @ raji-ramamoorthi & @kenota

วิธีแก้ปัญหาที่ใช้งานได้สำหรับฉันคือการรวมกันของผู้ให้ข้อมูลด้านบนในชุดข้อความนี้

การได้มาScanResultที่นี่เป็นกระบวนการ

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
if (wifi.isWifiEnabled() == false) {
            Toast.makeText(getApplicationContext(), "wifi is disabled..making it enabled", Toast.LENGTH_LONG).show();
            wifi.setWifiEnabled(true);
        }

BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context c, Intent intent) {
                 wifi.getScanResults();
            }
        };

แจ้งให้ทราบเกี่ยวกับunregisterมันonPauseและonStopมีชีวิตอยู่นี้unregisterReceiver(broadcastReceiver);

public void connectWiFi(ScanResult scanResult) {
        try {

            Log.v("rht", "Item clicked, SSID " + scanResult.SSID + " Security : " + scanResult.capabilities);

            String networkSSID = scanResult.SSID;
            String networkPass = "12345678";

            WifiConfiguration conf = new WifiConfiguration();
            conf.SSID = "\"" + networkSSID + "\"";   // Please note the quotes. String should contain ssid in quotes
            conf.status = WifiConfiguration.Status.ENABLED;
            conf.priority = 40;

            if (scanResult.capabilities.toUpperCase().contains("WEP")) {
                Log.v("rht", "Configuring WEP");    
                conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
                conf.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
                conf.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
                conf.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
                conf.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
                conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
                conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
                conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
                conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);

                if (networkPass.matches("^[0-9a-fA-F]+$")) {
                    conf.wepKeys[0] = networkPass;
                } else {
                    conf.wepKeys[0] = "\"".concat(networkPass).concat("\"");
                }

                conf.wepTxKeyIndex = 0;

            } else if (scanResult.capabilities.toUpperCase().contains("WPA")) {
                Log.v("rht", "Configuring WPA");

                conf.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
                conf.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
                conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
                conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
                conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
                conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
                conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
                conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
                conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);

                conf.preSharedKey = "\"" + networkPass + "\"";

            } else {
                Log.v("rht", "Configuring OPEN network");
                conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
                conf.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
                conf.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
                conf.allowedAuthAlgorithms.clear();
                conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
                conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
                conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
                conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
                conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
                conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
            }

            WifiManager wifiManager = (WifiManager) WiFiApplicationCore.getAppContext().getSystemService(Context.WIFI_SERVICE);
            int networkId = wifiManager.addNetwork(conf);

            Log.v("rht", "Add result " + networkId);

            List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
            for (WifiConfiguration i : list) {
                if (i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"")) {
                    Log.v("rht", "WifiConfiguration SSID " + i.SSID);

                    boolean isDisconnected = wifiManager.disconnect();
                    Log.v("rht", "isDisconnected : " + isDisconnected);

                    boolean isEnabled = wifiManager.enableNetwork(i.networkId, true);
                    Log.v("rht", "isEnabled : " + isEnabled);

                    boolean isReconnected = wifiManager.reconnect();
                    Log.v("rht", "isReconnected : " + isReconnected);

                    break;
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

5

หากอุปกรณ์ของคุณรู้การกำหนดค่า Wifi (จัดเก็บไว้แล้ว) เราสามารถเลี่ยงวิทยาศาสตร์จรวดได้ ตรวจสอบ SSID ว่าตรงกันหรือไม่ ถ้าเป็นเช่นนั้นการเชื่อมต่อและการกลับมา

ตั้งค่าการอนุญาต:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

การเชื่อมต่อ

    try {
    String ssid = null;
    if (wifi == Wifi.PCAN_WIRELESS_GATEWAY) {
        ssid = AesPrefs.get(AesConst.PCAN_WIRELESS_SSID,
                context.getString(R.string.pcan_wireless_ssid_default));
    } else if (wifi == Wifi.KJ_WIFI) {
        ssid = context.getString(R.string.remote_wifi_ssid_default);
    }

    WifiManager wifiManager = (WifiManager) context.getApplicationContext()
            .getSystemService(Context.WIFI_SERVICE);

    List<WifiConfiguration> wifiConfigurations = wifiManager.getConfiguredNetworks();

    for (WifiConfiguration wifiConfiguration : wifiConfigurations) {
        if (wifiConfiguration.SSID.equals("\"" + ssid + "\"")) {
            wifiManager.enableNetwork(wifiConfiguration.networkId, true);
            Log.i(TAG, "connectToWifi: will enable " + wifiConfiguration.SSID);
            wifiManager.reconnect();
            return null; // return! (sometimes logcat showed me network-entries twice,
            // which may will end in bugs)
        }
    }
} catch (NullPointerException | IllegalStateException e) {
    Log.e(TAG, "connectToWifi: Missing network configuration.");
}
return null;

5

ฉันยากที่จะเข้าใจว่าทำไมคำตอบของคุณสำหรับ WPA / WPA2 ไม่ทำงาน ... หลังจากพยายามหลายชั่วโมงฉันพบสิ่งที่คุณหายไป:

conf.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);

จำเป็นสำหรับเครือข่าย WPA !!!!

ตอนนี้มันใช้งานได้ :)


4

นี่เป็นกิจกรรมที่คุณสามารถคลาสย่อยเพื่อบังคับให้เชื่อมต่อกับ wifi เฉพาะ: https://github.com/zoltanersek/android-wifi-activity/blob/master/app/src/main/java/com/zoltanersek/androidwifiactivity/ WifiActivity.java

คุณจะต้อง subclass กิจกรรมนี้และใช้วิธีการ:

public class SampleActivity extends WifiBaseActivity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
  }

  @Override
  protected int getSecondsTimeout() {
      return 10;
  }

  @Override
  protected String getWifiSSID() {
      return "WifiNetwork";
  }

  @Override
  protected String getWifiPass() {
      return "123456";
  }
}

ลิงก์ลงคุณสามารถให้ใหม่ได้หรือไม่
StartCoding

4

ในระดับ API 29 WifiManager.enableNetwork()วิธีการที่เลิกใช้งานแล้ว ตามเอกสาร Android API (ตรวจสอบที่นี่ ):

  1. ดู WifiNetworkSpecifier.Builder # build () สำหรับกลไกใหม่ในการกระตุ้นการเชื่อมต่อกับเครือข่าย Wi-Fi
  2. ดู addNetworkSuggestions (java.util.List), removeNetworkSuggestions (java.util.List) สำหรับ API ใหม่เพื่อเพิ่มเครือข่าย Wi-Fi เพื่อพิจารณาเมื่อเชื่อมต่อกับ wifi อัตโนมัติ หมายเหตุความเข้ากันได้: สำหรับแอปพลิเคชันที่กำหนดเป้าหมายเป็น Build.VERSION_CODES.Q ขึ้นไป API นี้จะส่งคืนค่าเท็จเสมอ

ระดับ API ที่ 29 เพื่อเชื่อมต่อกับเครือข่ายอินเตอร์เน็ตไร้สาย, WifiNetworkSpecifierคุณจะต้องใช้ คุณสามารถค้นหารหัสตัวอย่างได้ที่https://developer.android.com/reference/android/net/wifi/WifiNetworkSpecifier.Builder.html#build ()


เป็นไปได้หรือไม่ที่จะเชื่อมต่อกับเครือข่าย WEP ด้วย WifiNetWorkSpecifier.Builder ใหม่? ฉันไม่พบวิธีในการเพิ่มข้อความรหัสผ่าน WEP ให้กับผู้สร้าง
Dieter27

ดูเหมือนหมายเลข 1 ไม่ทำงานมีการติดต่อกลับหรือไม่
Faizan Mir

1

ฉันพยายามเชื่อมต่อกับเครือข่าย ไม่มีคำตอบใด ๆ ที่นำเสนอข้างต้นสำหรับ hugerock t70 ฟังก์ชั่น wifiManager.disconnect (); ไม่ได้ตัดการเชื่อมต่อจากเครือข่ายปัจจุบัน ดังนั้นจึงไม่สามารถเชื่อมต่อกับเครือข่ายที่ระบุได้อีกครั้ง ฉันได้แก้ไขโค้ดด้านบน สำหรับฉันรหัส bolow ทำงานอย่างสมบูรณ์:

String networkSSID = "test";
String networkPass = "pass";

WifiConfiguration conf = new WifiConfiguration();
conf.SSID = "\"" + networkSSID + "\"";   
conf.wepKeys[0] = "\"" + networkPass + "\""; 
conf.wepTxKeyIndex = 0;
conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); 
conf.preSharedKey = "\""+ networkPass +"\"";

WifiManager wifiManager =         
(WifiManager)context.getSystemService(Context.WIFI_SERVICE);    

int networkId = wifiManager.addNetwork(conf);
wifi_inf = wifiManager.getConnectionInfo();

/////important!!!
wifiManager.disableNetwork(wifi_inf.getNetworkId());
/////////////////

wifiManager.enableNetwork(networkId, true);

ฉันพบข้อผิดพลาดใน Android 10:UID nnnnn does not have permission to update configuration xxxx. MD_START_CONNECT but no requests and connected, but app does not have sufficient permissions, bailing.
Luis A. Florit

0

ลองวิธีนี้ มันง่ายมาก:

public static boolean setSsidAndPassword(Context context, String ssid, String ssidPassword) {
    try {
        WifiManager wifiManager = (WifiManager) context.getSystemService(context.WIFI_SERVICE);
        Method getConfigMethod = wifiManager.getClass().getMethod("getWifiApConfiguration");
        WifiConfiguration wifiConfig = (WifiConfiguration) getConfigMethod.invoke(wifiManager);

        wifiConfig.SSID = ssid;
        wifiConfig.preSharedKey = ssidPassword;

        Method setConfigMethod = wifiManager.getClass().getMethod("setWifiApConfiguration", WifiConfiguration.class);
        setConfigMethod.invoke(wifiManager, wifiConfig);

        return true;
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.