Comment créer le point d'accès par programmation
J'ai écrit le code pour créer un point d'accès pour les appareils android. Je l'ai testé sur les deux émulateur et périphérique réel.Mais ça ne fonctionne pas. Où ai-je tort?
public class MainWAP extends Activity {
WifiManager wifiManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_wap);
}
public void openWifi(View v) {
createWifiAccessPoint();
}
private void createWifiAccessPoint() {
if (wifiManager.isWifiEnabled()) {
wifiManager.setWifiEnabled(false);
}
Method[] wmMethods = wifiManager.getClass().getDeclaredMethods();
boolean methodFound = false;
for (Method method: wmMethods) {
if (method.getName().equals("setWifiApEnabled")) {
methodFound = true;
WifiConfiguration netConfig = new WifiConfiguration();
netConfig.SSID = "AccessPoint";
netConfig.allowedAuthAlgorithms.set(
WifiConfiguration.AuthAlgorithm.OPEN);
try {
boolean apstatus = (Boolean) method.invoke(
wifiManager, netConfig, true);
for (Method isWifiApEnabledmethod: wmMethods) {
if (isWifiApEnabledmethod.getName().equals(
"isWifiApEnabled")) {
while (!(Boolean) isWifiApEnabledmethod.invoke(
wifiManager)) {};
for (Method method1: wmMethods) {
if (method1.getName().equals(
"getWifiApState")) {
int apstate;
apstate = (Integer) method1.invoke(
wifiManager);
}
}
}
}
if (apstatus) {
Log.d("Splash Activity",
"Access Point created");
} else {
Log.d("Splash Activity",
"Access Point creation failed");
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
if (!methodFound) {
Log.d("Splash Activity",
"cannot configure an access point");
}
}
}
- Êtes-vous d'obtenir une sorte de message d'erreur lié? Message du journal?
- ainsi en est-il maintenant résolu @daniel?
- si vous ne l'avez pas encore fait. Veuillez vérifier espère que ça peut t'aider : omtlab.com/... @daniel
- Comment le désactiver?
Vous devez vous connecter pour publier un commentaire.
Votre
WiFiManager
est certainement pas initialisé.Dans votre
onCreate
méthode ajouter ceci:null
) tout fonctionne très bien (je viens de le tester).Vous avez besoin de peu de choses pour rendre ce code de travail.
1) Init wifiManager
onCreate()
:2) Vous devez demander ces autorisations en vous
AndroidManifest.xml
:3) Votre demande doit être signé avec un certificat de système.
WRITE_APN_SETTINGS
il vous dit que le seul système les applications peuvent utiliser cette autorisation.Avec votre méthode d'exploitation des sans-papiers Api à l'aide de la réflexion, les choses pourraient ne pas bien fonctionner dans tous les scénarios.
Eh bien, vous pouvez essayer d'ajouter dans votre fichier de manifeste et de donner un essai.
createWifiAccessPoint();
2) Causée par java.lang.NullPointerException à la ligne 33:if(wifiManager.isWifiEnabled())
@WilHall