2012-09-28 4 views
5

Ich habe zwei Klassen: eine davon ist eine Aktivitätsklasse und die andere ist keine Aktivität. Und ich rufe eine Methode auf, die sich innerhalb der Nicht-Aktivitätsklasse befindet, um Mac Adresse zurückzugeben.Wie kann ich WifiManager in einer Nicht-Aktivitätsklasse verwenden?

Aktivitätsklasse:

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

und nicht-Aktivitätsklasse:

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; 

}} 

aber die Methode return null. Ich habe die Erlaubnis ACCESS_WIFI_STATE.

+0

Ist die WiFi-Verbindung _active_, wenn Sie Ihren Code ausführen? –

Antwort

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; 

}} 

ich den Code nicht ausgeführt haben, aber das ist seine hw

+0

erstens, danke für Ihre Antwort, aber das Projekt hat aufgehört, wenn ich den Code geändert habe, was Sie gesagt haben. – Taha

+0

bitte gehen Sie durch den aktualisierten Code ich debuggte es und es läuft gut .... es gibt mir das erforderliche Ergebnis. –

+0

64: A7: 69: AF: 60: B9 Ich habe meine Macadresse von der oben genannten Code beim Debuggen –

0

getan werden wir, dass non-Activity Klasse die Context dieser Activity passieren kann. Hier

ist ein Ausschnitt aus Netz:

Class conectivityManager 

Context myContext; 

public conectivityManager(Context cxt){ 

myContext = cxt 

} 

public startWifi(){ 

//start-wifi 

} 

diesen Link ansehen:

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

+0

Nun, das ist _exactly_, was bereits im Code gemacht wurde, außer dass der gespeicherte Kontext 'this.mcontext' anstelle von' myContext' heißt. –

3

wenn Ihr WiFi ist nicht auf dem Gerät aktivieren, wird es null zurück als Ihr Fall, überprüfen Sie, ob das Wifi aktiviert ist, wenn es aktiviert ist, geben Sie die MAC-Adresse zurück, andernfalls benachrichtigen Sie den Benutzer, um das Wifi zu aktivieren.

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

danke für Ihre Antwort. Sie haben recht. Ich wusste nicht, Emulator 3g Internetverbindung verwenden. – Taha

Verwandte Themen