2012-09-28 8 views
5

Tengo dos clases: una de estas es una clase de actividad y la otra no actividad. Y llamo a un método que está dentro de la clase no activa para devolver mac Dirección.¿Cómo puedo usar WifiManager en una clase no activa?

clase de actividad:

public class Control extends Activity { 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    deneme d = new deneme(this); // i has tried (getApplicatonContext) 
    String x = d.macadress(); 
    Toast.makeText(getApplicationContext(), x, Toast.LENGTH_LONG).show(); 
}} 

y clase no actividad:

public class deneme { 
Context mcontext ; 
WifiManager wm; 

public deneme(Context mcontext){ 
    this.mcontext = mcontext; 
} 

public String macadress(){ 
    wm = (WifiManager)mcontext.getSystemService(Context.WIFI_SERVICE); 
    String m_szWLANMAC = wm.getConnectionInfo().getMacAddress(); 
    return m_szWLANMAC; 

}} 

pero el nulo retorno método. Tengo el permiso ACCESS_WIFI_STATE.

+0

es la conexión Wi-Fi _active_ cuando se ejecuta el código? –

Respuesta

1
public class MainActivity extends Activity { 

     @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     deneme d = new deneme(getApplicationContext()); 
    // String x=d.wm.getConnectionInfo().getMacAddress(); 


     String x = d.macadress(); 
     Toast.makeText(getApplicationContext(), x, Toast.LENGTH_LONG).show(); 

    } 


} 
class deneme { 
Context mcontext ; 
WifiManager wm; 

public deneme(Context mcontext){ 
    this.mcontext = mcontext; 
} 

public String macadress(){ 
    wm = (WifiManager)mcontext.getSystemService(Context.WIFI_SERVICE); 
    String m_szWLANMAC = wm.getConnectionInfo().getMacAddress(); 
    return m_szWLANMAC; 

}} 

Yo no ejecutar el código, pero este es su hw por hacer

+0

en primer lugar, gracias por su respuesta, pero el proyecto se detuvo cuando cambié el código de acuerdo con lo que dijo. – Taha

+0

por favor revise el código actualizado, lo depuré y funciona bien ... me da el resultado requerido. –

+0

64: A7: 69: AF: 60: B9 obtuve mi macaddress del código anterior al depurar –

0

Podemos pasar el Context de ese Activity a que non-Activity clase.

Aquí hay un fragmento de la red:

Class conectivityManager 

Context myContext; 

public conectivityManager(Context cxt){ 

myContext = cxt 

} 

public startWifi(){ 

//start-wifi 

} 

ver este enlace:

http://www.brighthub.com/mobile/htc/articles/75491.aspx

+0

Bueno, eso es _exactly_ lo que ya está hecho en el código, excepto que el contexto guardado se llama 'this.mcontext' en lugar de' myContext'. –

3

si su wifi no se permiten en el dispositivo, se devolverá un valor nulo como En su caso, compruebe si el wifi está habilitado y, si está habilitado, devuelva la dirección MAC. De lo contrario, notifique al usuario que debe habilitar el wifi.

package com.example.wifitest; 

import android.content.Context; 
import android.net.wifi.WifiManager; 
import android.widget.Toast; 

public class TEST { 
    Context mcontext; 
WifiManager wm; 

public TEST(Context mcontext) { 
    this.mcontext = mcontext; 
} 

public String macadress() { 
    wm = (WifiManager) mcontext.getSystemService(Context.WIFI_SERVICE); 
    if (wm.isWifiEnabled()) { 
     String m_szWLANMAC = wm.getConnectionInfo().getMacAddress(); 
     return m_szWLANMAC; 
    } 
    else{ 
     Toast.makeText(mcontext, "Please enbale your wifi", 
       Toast.LENGTH_SHORT).show(); 
     return null; 
    } 

} 

}

+0

gracias por su respuesta. tienes razón. No sabía que el emulador usara 3g de conexión a internet. – Taha

Cuestiones relacionadas