আমি কীভাবে অ্যানড্রয়েড প্রোগ্রামে কোনও নির্দিষ্ট ওয়াই-ফাই নেটওয়ার্কের সাথে সংযোগ করব?


294

আমি এমন একটি অ্যাপ্লিকেশন ডিজাইন করতে চাই যা উপলব্ধ ওয়াই-ফাই নেটওয়ার্কগুলির একটি তালিকা দেখায় এবং ব্যবহারকারী যে কোনও নেটওয়ার্কের সাথে সংযোগ স্থাপন করবে connect

আমি স্ক্যানের ফলাফলগুলি দেখিয়ে অংশটি বাস্তবায়ন করেছি। এখন আমি স্ক্যান ফলাফলের তালিকা থেকে ব্যবহারকারী দ্বারা নির্বাচিত একটি নির্দিষ্ট নেটওয়ার্কের সাথে সংযোগ করতে চাই।

আমি এটা কিভাবে করবো?



এটি আমার জন্য ডাব্লুপিএ 2 এবং ডব্লিউইপি: স্ট্যাকওভারফ্লো.com
a

উত্তর:


440

আপনার এ জাতীয় 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); 

ডাব্লুপিএ নেটওয়ার্কের জন্য আপনাকে এই জাতীয় পাসফ্রেজ যুক্ত করতে হবে:

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

ওপেন নেটওয়ার্কের জন্য আপনাকে এটি করতে হবে:

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

তারপরে, আপনার এটিকে অ্যান্ড্রয়েড ওয়াইফাই ম্যানেজার সেটিংসে যুক্ত করতে হবে:

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

এবং অবশেষে, আপনার এটি সক্ষম করার দরকার হতে পারে, সুতরাং অ্যান্ড্রয়েড এটির সাথে সংযোগ স্থাপন করে:

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;
    }           
 }

ইউপিডি: ডাব্লুইইপি'র ক্ষেত্রে, যদি আপনার পাসওয়ার্ড হেক্সে থাকে, আপনার উদ্ধৃতি দিয়ে এটিকে ঘিরে আপনার প্রয়োজন হবে না।


5
যে ভাল কাজ করে! আপনাকে ধন্যবাদ :) তবে আরও একটি জিনিস আমি জিজ্ঞাসা করতে চাই। আপনি কি অনুমোদিত পেয়ারওয়াইস সাইফার, অনুমোদিতউথালগোরিদমস এবং অনুমোদিতপ্রোটোকল সেট করার দরকার নেই? এবং কোন নির্দিষ্ট বৈশিষ্ট্যটি সেট করতে হবে তা কীভাবে সিদ্ধান্ত নেবেন; আপনি যেমন ডাব্লুইইপি নেটওয়ার্কগুলির জন্য গ্রুপসিফারের জন্য WEP40 সেট করেছেন?
বিক্রম গুপ্ত

8
আমি একটি জিনিস উল্লেখ করতে ভুলে গেছি। ডাব্লুইইপি'র ক্ষেত্রে, যদি আপনার পাসওয়ার্ড হেক্সে থাকে, আপনার উদ্ধৃতি দ্বারা এটিকে ঘিরে আপনার প্রয়োজন হবে না।
কেনোট

8
সুন্দর সমাধানের জন্য ধন্যবাদ, আপনি কীভাবে সংযোগটি সফল হয়েছে কিনা তা পরীক্ষা করে দেখুন কীভাবে তা ব্যাখ্যা করতে পারেন। উদাহরণস্বরূপ ব্যবহারকারী ভুল পাসওয়ার্ড লিখতে পারে এবং এটি সম্পর্কে অবহিত করা উচিত।
পাস্কেল ক্লেইন

3
কীভাবে যদি পছন্দসই ওয়াইফাই হটস্পট কোনও পাসওয়ার্ড ব্যবহার না করে তবে কী করা উচিত .... আমরা কি .PRESharedKey ব্যবহার করব = নাল; বা আমরা সেট করা উচিত .preSharedKey = ""; কোনটি সঠিক? @ কেনোটা
গুমুরুহ

6
এটি আমার পক্ষে কাজ করে না: এটি নতুনটির সাথে সংযোগ স্থাপনের পরিবর্তে পূর্বের স্মরণযুক্ত ওয়াইফাই থেকে সরাসরি সংযোগ স্থাপন করে।
ভেরথুস

138

তার আগে উত্তর কাজ করে , কিন্তু সমাধান আসলে সহজ হতে পারে। আপনি যখন ওয়াইফাই ম্যানেজারের মাধ্যমে নেটওয়ার্ক যুক্ত করেন তখন নেটওয়ার্ক আইডি পাওয়ার কারণে কনফিগার করা নেটওয়ার্ক তালিকার মাধ্যমে লুপিং প্রয়োজন হয় না।

সুতরাং সম্পূর্ণ, সরলিকৃত সমাধানটি এর মতো দেখতে লাগবে:

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
যদি পাসওয়ার্ড ব্যবহার না করা হয়। Should we should .preeSharedKey = নাল; বা আমাদের কেবল খালি স্ট্রিং রাখা উচিত, @ সানলোইওলা?
gumuruh

2
আপনি যদি ইতিমধ্যে অন্য নেটওয়ার্কের সাথে সংযুক্ত থাকেন তবে আপনাকে মুহম্মদরফাহাট আপনি সংযোগ বিচ্ছিন্ন করুন।
শান লয়েলা

1
@ গুমুরুহ আপনাকে কী প্রেসের প্রয়োজনবোধে প্রেহারেডকি কৌতুকটি একেবারেই অন্তর্ভুক্ত করতে হবে না।
শান লয়োলা

7
সক্ষম নেট নেটওয়ার্ডের জাভাদোক অনুসারে, আপনি যদি বুলিয়ান অক্ষমঅর্থারদের সত্য ব্যবহার করেন তবে আপনার সংযোগ বিচ্ছিন্ন বা সংযোগ করতে হবে না, এটি আপনার জন্য উভয়ই করবে
নিককিডি

12
CHANGE_WIFI_STATEঅনুমতি সম্ভবত প্রয়োজন উল্লেখ করা উচিত ।
থমাস ডাব্লু

27

ওয়াইফাই নেটওয়ার্ক সংযুক্ত হওয়ার আগে আপনাকে সুরক্ষা ধরণের ওয়াইফাই নেটওয়ার্ক স্ক্যানআরসাল্ট শ্রেণীর একটি দক্ষতা রয়েছে তা যাচাই করতে হবে। এই ক্ষেত্রটি আপনাকে নেটওয়ার্কের ধরণ দেয়

রেফারেন্স: https://developer.android.com/references/android/net/wifi/ScanResult.html# ক্ষমতা

আছে তিন ধরনের ওয়াইফাই নেটওয়ার্ক।

প্রথমে একটি ওয়াইফাই কনফিগারেশন অবজেক্টটি ইনস্ট্যান্ট করুন এবং নেটওয়ার্কের এসএসআইডি পূরণ করুন (নোট করুন যে এটি ডাবল কোটে আবদ্ধ করতে হবে), প্রাথমিক অবস্থাটি অক্ষম করে সেট করুন, এবং নেটওয়ার্কের অগ্রাধিকার উল্লেখ করুন (প্রায় 40 টি সংখ্যা ভাল কাজ করে বলে মনে হচ্ছে)।

WifiConfiguration wfc = new WifiConfiguration();

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

এখন আরও জটিল অংশের জন্য: নেটওয়ার্কের সুরক্ষা মোড নির্দিষ্ট করতে আমাদের ওয়াইফাই কনফিগারেশনের বেশ কয়েকটি সদস্য পূরণ করতে হবে। উন্মুক্ত নেটওয়ার্কগুলির জন্য

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 ব্যবহার করে; নোট করুন যে ডাব্লুইইপি কীটিও ডাবল উদ্ধৃতিতে আবদ্ধ।

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

অগ্রাধিকারের উপর একটি নোট, আমার ফোন নম্বরগুলিতে প্রায় 4000 কাজ করেছিল। সেই অংশটিকে আরও কিছুটা গতিশীল করার সম্ভাব্য সেরা (বিদ্যমান কনফিগারগুলি পুনরায় করা)
স্যাম

আমি কিভাবে জন্য ওয়াইফাই ScanResult SSID এর থেকে নেটওয়ার্কের নিরাপত্তা টাইপ পেতে পারে
শান্তনু

@ শানতানু বিস্তারিত জানতে নিম্নলিখিত পরীক্ষা করুন। stackoverflow.com/questions/6866153/...
Kalpesh Gohel

স্যামসাং ডিভাইসে, পাসফ্রেজটি হ্যাশ স্ট্রিং হয়। এবং কোড কাজ করে না। তুমি কি তা পরীক্ষা কর?
এনগুইন মিন বিন

আপনি কি সিম প্রকারের ওয়াইফাইয়ের EAP সংযোগের জন্য একটি নমুনা সরবরাহ করতে পারেন?
প্রশান্ত দেববাদ্বর

19

@ রাজি-রামমুরথি এবং @ টেনোটায় ক্রেডিট

যে সমাধানটি আমার পক্ষে কাজ করেছে তা হ'ল এই থ্রেডে উপরের অবদানকারীদের সংমিশ্রণ।

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

যদি আপনার ডিভাইসটি ওয়াইফাই কনফিগারগুলি (ইতিমধ্যে সঞ্চিত) জানে তবে আমরা রকেট বিজ্ঞানকে বাইপাস করতে পারি। এসএসআইডি মিলছে কিনা তা কনফিগার করে একটি লুপ করুন। যদি তা হয় তবে সংযুক্ত হয়ে ফিরে আসুন ।

অনুমতি সেট করুন:

<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

ডাব্লুপিএ / ডাব্লুপিএ 2 এর জন্য আপনার উত্তরগুলি কেন কাজ করে না তা বোঝার জন্য আমি আমার মাথা ভেঙে ফেলেছি ... কয়েক ঘন্টা চেষ্টা করার পরেও আমি খুঁজে পেয়েছি আপনি কী অনুপস্থিত:

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

ডব্লিউপিএ নেটওয়ার্কগুলির জন্য প্রয়োজনীয়!

এখন এটা কাজ করছে :)


4

এটি এমন একটি ক্রিয়াকলাপ যা আপনি নির্দিষ্ট ওয়াইফাইয়ের সাথে সংযোগ করার জন্য বাধ্য করতে সাবক্লাস করতে পারেন: https://github.com/zoltanersek/android-wifi-activity/blob/master/app/src/main/java/com/zoltanersek/androidwifiactivity/ WifiActivity.java

আপনার এই ক্রিয়াকলাপটি সাবক্লাস করতে হবে এবং এর পদ্ধতিগুলি প্রয়োগ করতে হবে:

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";
  }
}

লিঙ্ক ডাউন আপনি নতুন দিতে পারেন?
স্টার্টকডিং


4

এপিআই স্তরের 29-এ, WifiManager.enableNetwork()পদ্ধতি অবমূল্যায়ন করা হয়েছে । অ্যান্ড্রয়েড এপিআই ডকুমেন্টেশন অনুসারে ( এখানে চেক করুন ):

  1. ওয়াই-ফাই নেটওয়ার্কের সাথে সংযোগ ট্রিগার করতে নতুন প্রক্রিয়াটির জন্য ডাব্লুআইডি নেট ওয়ার্কসস্পিফায়ার.বিল্ডার # বিল্ড () দেখুন।
  2. ওয়াইফাইতে স্বয়ংক্রিয়ভাবে সংযুক্ত হওয়ার সময় বিবেচনার জন্য ওয়াই-ফাই নেটওয়ার্ক যুক্ত করার জন্য নতুন এপিআই-এর জন্য অ্যাড নেট নেটসাগেশনস (java.util.List), সরান নেটওয়ার্কসাগসেশনস (java.util.List) দেখুন। সামঞ্জস্যতা দ্রষ্টব্য: বিল্ড। VERSION_CODES.Q বা তদুর্ধের অ্যাপ্লিকেশনগুলির জন্য, এই API টি সর্বদা মিথ্যা প্রত্যাবর্তন করবে।

ওয়াইফাই নেটওয়ার্কে সংযোগ করতে, API স্তর 29 থেকে, আপনাকে ব্যবহার করতে হবে WifiNetworkSpecifier। আপনি https://developer.android.com/references/android/net/wifi/WifiNetworkSpecifier.Builder.html#build () এ উদাহরণ কোড খুঁজে পেতে পারেন


নতুন WifiNetWorkSpecifier.Builder এর সাথে কি কোনও WEP নেটওয়ার্কের সাথে সংযোগ স্থাপন করা সম্ভব? আমি বিল্ডারে WEP পাসফ্রেজ যুক্ত করার কোনও পদ্ধতি খুঁজে পাচ্ছি না।
ডাইটার 27

1 নম্বর কাজ করে না বলে মনে হচ্ছে এটির কোনও কলব্যাক আছে?
ফয়জান মীর

1

আমি নেটওয়ার্কে সংযোগ দেওয়ার চেষ্টাও করেছি। উপরের প্রস্তাবিত সমাধানগুলির মধ্যে কোনওটি হাগারক টি 70-এর জন্য কাজ করে না। ফাংশন wifiManager.disconnect (); বর্তমান নেটওয়ার্ক থেকে সংযোগ বিচ্ছিন্ন করে না। এবং অতএব নির্দিষ্ট নেটওয়ার্কের সাথে পুনরায় সংযোগ করতে পারে না। আমি উপরের কোডটি পরিবর্তন করেছি। আমার জন্য কোড বোলো পুরোপুরি কাজ করে:

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);

অ্যান্ড্রয়েড 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.
লুইস এ ফ্লোরিট

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.