2012-09-28 22 views
5

我有兩個類:其中之一是活動類,另一種是不活動。而且我調用了一個在非活動類中用於返回mac地址的方法。如何在非活動類中使用WifiManager?

活動類:

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

和非活性類:

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; 

}} 

但該方法返回null。我有權限ACCESS_WIFI_STATE。

+0

是WiFi連接_active_當你運行你的代碼? –

回答

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; 

}} 

我沒有運行的代碼,但是這是漢王它做

+0

首先,感謝您的回覆,但該項目時,我按照你說的是什麼改變了代碼停止。 – Taha

+0

請經過更新的代碼我調試它和它的運行良好....它給了我需要的結果。 –

+0

64:A7:69:AF:60:B9我從上面的代碼我MACADDRESS在調試 –

0

我們可以通過那Activitynon-ActivityContext

下面是從網上一個片段:

Class conectivityManager 

Context myContext; 

public conectivityManager(Context cxt){ 

myContext = cxt 

} 

public startWifi(){ 

//start-wifi 

} 

請參閱此鏈接:

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

+0

嗯,這是什麼_exactly_在代碼已經完成,除了保存的上下文被稱爲'this.mcontext',而不是'myContext'。 –

3

,如果你的無線網絡連接設備上未啓用,它將返回null作爲你的情況,檢查WiFi是否啓用,然後如果啓用返回MAC地址,否則通知用戶啓用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

感謝您的回覆。你是對的。我不知道模擬器使用3G互聯網連接。 – Taha

相關問題