2016-10-18 7 views
0

WifiManager 객체로 OnCreate()에서 Wi-Fi를 켤 수 있음을 알고 있습니다. 그러나 필자의 프로젝트는 단순히 WiFi 기능을 사용하기보다는 객체 지향 접근법을 요구한다. MainActivity 클래스와에서 onCreate() 지금클래스 객체로 WiFi를 켤 수 없음

public class WiFiSenderBase extends Activity implements Sender 
{ 
    public static WifiManager wifi; 

    WiFiSenderBase() 
    { 
     wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
    } 

    @Override 
    public boolean TurnOn() 
    { 
     if(!wifi.isWifiEnabled()) 
     { 
      wifi.setWifiEnabled(true); 
      return true; 
     } 
     return false; 
    } 
} 

: 그래서 내가 클래스를 만들어 지금

public class MainActivity extends Activity 
{ 
    ToggleButton t; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     t = (Button)findViewById(R.id.Button1_ref); 
     final WiFiSenderBase wifi = new WiFiSenderBase(); 
     t.setOnClickListener(new View.OnClickListener() 
      { 
       @Override 
       public void onClick(View v) 
       { 
        wifi.TurnOn(); 
       } 
      }); 
    } 
} 

, 문제는에서 onCreate() 자체에 대한 응용 프로그램 충돌 및 축배를 만드는 것입니다

불행하게도, 앱 내가 MainAc에서 WiFiSenderBase 클래스의 인스턴스에 문제가 있다고 생각

을 중지 WiFiSenderBase 또한 Activity 클래스를 확장하므로 WiFiSenderBase에서 Activity를 확장하지 않으면 getSystemService()을 사용할 수 없습니다. 어떤 도움을받을 수 있습니다.

p.s. 이클립스 화성을 사용하고 필요한 모든 수입이 이루어졌습니다

+0

'CHANGE_WIFI_STATE' 권한이 설정되어 있습니까? 'ACCESS_WIFI_STATE'도 필요합니다. – RayfenWindspear

+0

@RayfenWindspear 네, 그랬습니다. –

+0

이것이 필요한지 아닌지 잘 모르겠습니다. 나는 그들 자신을 사용한 적이 없다. 'ACCESS_NETWORK_STATE''CHANGE_NETWORK_STATE' – RayfenWindspear

답변

0

해결책을 찾았습니다. WifiManager 객체로 OnCreate()에서 Wi-Fi를 켭니다. 그리고 MainActivity 클래스와에서 onCreate() 지금 WiFiSenderBase의 생성자 :

public class WiFiSenderBase implements Sender 
{ 
    public static WifiManager wifi; 

    WiFiSenderBase(WifiManager man) 
    { 
     wifi = man; 
    } 

    @Override 
    public boolean TurnOn() 
    { 
     if(!wifi.isWifiEnabled()) 
     { 
      wifi.setWifiEnabled(true); 
      return true; 
     } 
     return false; 
    } 
} 

에 전달 :

public class MainActivity extends Activity 
{ 
    public WifiManager wifiman; 
    ToggleButton t; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     wifiman = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
     final WiFiSenderBase wifi = new WiFiSenderBase(wifiman); 
     t = (ToggleButton)findViewById(R.id.toggleButton1_ref); 
     t.setOnClickListener(new View.OnClickListener() 
      { 
       @Override 
       public void onClick(View v) 
       { 
        wifi.TurnOn(); 
       } 
      }); 
    } 
} 

이제 문제가 해결된다.

p.s. 이클립스 화성을 사용하고, 필요한 모든 수입이 이루어졌다.