Android Lollipop - WiFi Hotspot setWifiApEnabled()获取InvocationTargetException

Pep*_*tal 5 android wifimanager android-wifi android-5.0-lollipop

我在应用程序中使用

setWifiApEnabled()
Run Code Online (Sandbox Code Playgroud)

来自隐藏API(通过反射访问).它在一些较旧的手机上工作(还有三星Galaxy S3,有些手机有4.4,......)但我用三星Galaxy S5测试了它,我得到了

java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
...
Run Code Online (Sandbox Code Playgroud)

我正在使用类似的代码,如Android 2.2 wifi热点API如何设置为Android WifiConfiguration.preSharedKey连接到WPA2 PSK WiFi网络,但这是一个旧的代码.

你有经验吗?你有什么建议?

PS它在某些Android 4.4设备中也不起作用(但我没有得到InvocationTargetException).

Sah*_*ahl 3

尝试这个。

ConnectivityManager cman = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        Method[] methods = cman.getClass().getMethods();

        try
        {
            wifiManager.setWifiEnabled(false);
            Method enableWifi = wifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class);
            String ssid  =   " " //your SSID 
            String pass  =   " " // your Password
            WifiConfiguration  myConfig =  new WifiConfiguration();
            myConfig.SSID = ssid;
            myConfig.preSharedKey  = pass ;
            myConfig.status = WifiConfiguration.Status.ENABLED;
            myConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
            myConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
            myConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
            myConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); 
            myConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 
            myConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); 
            myConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
            result = (Boolean) enableWifi.invoke(wifiManager, myConfig, true);

        } 
        catch (Exception e) 
        {
            e.printStackTrace();
            result = false;
        }
Run Code Online (Sandbox Code Playgroud)

如果出现异常,请尝试将此权限添加到您的清单 android.permission.WRITE_SETTINGS


归档时间:

查看次数:

6767 次

最近记录:

6 年,9 月 前