【发布时间】:2016-10-18 16:49:21
【问题描述】:
我知道我可以通过 WifiManager 对象在 OnCreate() 中打开 WiFi。但我的项目需要一种面向对象的方法,而不是简单地使用 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;
}
}
现在在 MainActivity 类和 onCreate() 中:
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() 本身上崩溃并祝酒
很遗憾,应用已停止
我认为在 MainActivity 中实例化 WiFiSenderBase 类存在问题,因为 WiFiSenderBase 也扩展了 Activity 类,但是如果我不在 WiFiSenderBase 中扩展 Activity,那么我将无法使用 getSystemService ()。任何帮助都将不胜感激。
附言使用 eclipse mars,所有必要的导入都已经完成
【问题讨论】:
-
您确定您拥有
CHANGE_WIFI_STATE权限集吗?我确定ACCESS_WIFI_STATE也是必需的。 -
@RayfenWindspear 是的,我做到了。
-
我不确定这些是否也是必需的。我自己从未使用过它们。
ACCESS_NETWORK_STATECHANGE_NETWORK_STATE -
@RayfenWindspear 都是必须的,但是为什么我不能使用公共类的方法来开启WiFi呢?
-
也许看到这个问题。在答案 cmets 中,还有一个带有源代码的教程。 stackoverflow.com/questions/3930990/…
标签: java android inheritance android-wifi wifimanager