Java 宽频广播接收器不工作
首先,我会提示用户是否打开wifi。 如果关闭,我想打开wifi,扫描所有可用的wifi网络,并根据其ssid连接到某个网络。Java 宽频广播接收器不工作,java,android,broadcastreceiver,wifimanager,Java,Android,Broadcastreceiver,Wifimanager,首先,我会提示用户是否打开wifi。 如果关闭,我想打开wifi,扫描所有可用的wifi网络,并根据其ssid连接到某个网络。 我想注册一个宽频广播接收器,等待WifiManager完成扫描结果 public class Project1 extends Activity { /** * Called when the activity is first created. */ EditText userName;
我想注册一个宽频广播接收器,等待WifiManager完成扫描结果
public class Project1 extends Activity {
/**
* Called when the activity is first created.
*/
EditText userName;
EditText passWord;
Button button;
TextView thankYou;
WifiManager wifiManager;
List<ScanResult> results1;
BroadcastReceiver receiver;
public Boolean connectToNetworK() {
Log.e("Start of connect","Debug");
Log.e("before wifi manager of connect","Debug");
if(!wifiManager.isWifiEnabled()){
Log.e("wifi is not enabled","Debug");
wifiManager.setWifiEnabled(true);
}
Log.e("after wifi manager of connect","Debug");
List<ScanResult>results =null;
Log.e("after scan result = null","Debug");
while(!wifiManager.isWifiEnabled())
{
Log.e("wifi still off","Debug");
}
Log.e("wifi is on","Debug");
Log.e("starting scan","Debug");
wifiManager.startScan();
Log.e("waiting","Debug");
if(results1!=null && !results1.isEmpty())
{
Log.e("Results1 is not emplty","Debug");
}
}
@Override
public void onStop()
{
unregisterReceiver(receiver);
}
public void onCreate(Bundle savedInstanceState) {
final Context contex = this;
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
if(receiver == null){
Log.e("Registering reciver","mark");
receiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent){
Log.e("In broad cast reciver","mark");
results1 =wifiManager.getScanResults();
}
};
registerReceiver(receiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
}
}
if (!mWifi.isConnected()) {
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Please Open the Wifi");
alert.setMessage("Your Wifi is Currently Turned off, Would You like to turn it on?");
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
if(connectToMobinilNetworK())
{
AfterWifiIsOn();
}
else{
Intent intent = new Intent(contex, ErrorPage.class);
startActivity(intent);}
}
});
alert.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(contex, ErrorPage.class);
startActivity(intent);
}
});
alert.show();
} }
}
}
The list of scan resutls are always empty and the logs inside the broadcast receiver is not written.
Thanks in advance.
公共类项目1扩展活动{
/**
*在首次创建活动时调用。
*/
编辑文本用户名;
编辑文本密码;
按钮;
谢谢你;
WifiManager WifiManager;
列出结果1;
广播接收机;
公共布尔连接网络(){
Log.e(“连接开始”、“调试”);
Log.e(“连接的wifi管理器之前”、“调试”);
如果(!wifiManager.isWifiEnabled()){
Log.e(“未启用wifi”,“调试”);
wifiManager.setWifiEnabled(true);
}
Log.e(“连接的wifi管理器之后”、“调试”);
Listresults=null;
Log.e(“扫描结果后=null”,“调试”);
而(!wifiManager.isWifiEnabled())
{
Log.e(“wifi仍处于关闭状态”、“调试”);
}
Log.e(“wifi开启”、“调试”);
Log.e(“开始扫描”、“调试”);
wifiManager.startScan();
Log.e(“等待”、“调试”);
if(results1!=null&&!results1.isEmpty())
{
Log.e(“结果1不是雇员”,“调试”);
}
}
@凌驾
公共void onStop()
{
未注册接收人(接收人);
}
创建时的公共void(Bundle savedInstanceState){
最终上下文上下文=此;
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
wifiManager=(wifiManager)getSystemService(Context.WIFI_服务);
如果(接收器==null){
Log.e(“注册接收器”、“标记”);
接收器=新的广播接收器(){
@凌驾
公共void onReceive(上下文、意图){
Log.e(“宽频带接收器”、“标记”);
results1=wifiManager.getScanResults();
}
};
registerReceiver(接收器,新的意向过滤器(WifiManager.SCAN\u RESULTS\u AVAILABLE\u ACTION));
}
}
如果(!mWifi.isConnected()){
AlertDialog.Builder alert=新建AlertDialog.Builder(此);
alert.setTitle(“请打开Wifi”);
alert.setMessage(“您的Wifi当前已关闭,是否要打开?”);
alert.setPositiveButton(“确定”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
//WifiManager wifi=(WifiManager)getSystemService(Context.wifi\u SERVICE);
if(connectToMobinilNetworK())
{
后遗症();
}
否则{
意向意向=新意向(contex,ErrorPage.class);
星触觉(意图);}
}
});
alert.setNegativeButton(“否”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
意向意向=新意向(contex,ErrorPage.class);
星触觉(意向);
}
});
alert.show();
} }
}
}
扫描结果列表始终为空,且未写入广播接收器内的日志。
提前谢谢。
您是否在AndroidManifest中设置了正确的权限?根据,您的权限应该如下所示:
<uses-sdk android:minSdkVersion="14" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
是的,我已经包括了所有这些权限