android studio字符串判空,Android Studio:getScanResults返回空,但是给出了权限

在尝试创建一个Android应用以显示可用Wi-Fi网络时遇到问题。已请求所有必要的网络权限,包括ACCESS_COARSE_LOCATION、ACCESS_WIFI_STATE和CHANGE_WIFI_STATE。然而,当尝试通过WifiManager获取扫描结果时,发现getScanResults返回为空。此外,还遇到了一个运行时异常,错误日志显示在接收到SCAN_RESULTS_AVAILABLE_ACTION广播时发生了IndexOutOfBoundsException。问题可能与位置服务的启用状态或Wi-Fi扫描逻辑有关。

我正在尝试创建一个代码,让我返回可用的Wi-Fi网络.但我遇到了一个问题.尽管我已经给出了所有可能的网络权限,但getScanResults返回为空.

public class MainActivity extends Activity {

private static final String TAG = "My Activity";

private StringBuilder sb = new StringBuilder();

private TextView tv;

List scanList;

@Override

protected void onCreate(Bundle savedInstanceState) {

final String CoarseLocation = Manifest.permission.ACCESS_COARSE_LOCATION;

final String AccessWifi = Manifest.permission.ACCESS_WIFI_STATE;

final String ChangeWifi = Manifest.permission.CHANGE_WIFI_STATE;

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

tv = (TextView) findViewById(R.id.textView2);

Button btn = (Button) findViewById(R. id. button);

btn.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v)

{

if (checkSelfPermission(CoarseLocation) != PackageManager.PERMISSION_GRANTED)

{

requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}, 123);

}

if (checkSelfPermission(AccessWifi) != PackageManager.PERMISSION_GRANTED)

{

requestPermissions(new String[]{Manifest.permission.ACCESS_WIFI_STATE, Manifest.permission.ACCESS_WIFI_STATE}, 123);

}

if (checkSelfPermission(ChangeWifi) != PackageManager.PERMISSION_GRANTED)

{

requestPermissions(new String[]{Manifest.permission.CHANGE_WIFI_STATE, Manifest.permission.CHANGE_WIFI_STATE}, 123);

}

LocationManager lman = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);

boolean network_enabled = false;

try

{

network_enabled = lman.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

} catch (Exception ex) {}

if (!network_enabled)

{

startActivityForResult(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS), 0);

}

final WifiManager mWifiManager = (WifiManager) getSystemService(WIFI_SERVICE);

mWifiManager.setWifiEnabled(true);

IntentFilter filter = new IntentFilter();

filter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);

registerReceiver(new BroadcastReceiver() {

@Override

public void onReceive(Context context, Intent intent) {

List results = mWifiManager.getScanResults();

final int Amount = results.size();

Log.v(TAG, "Wifi Scan Results Count: " + Amount);

int num = 1;

while (num <= Amount)

{

Log.v(TAG, "SSID = " + results.get(num).SSID);

num = num+1;

}

}

}, filter);

mWifiManager.startScan();

}

});

}

}

更新:

这是我在启用位置服务时尝试扫描Wi-Fi时出现的错误.我只进行了一个月的android编程,所以任何人都可以解释这个错误意味着什么?

10-15 21:55:21.843 21441-21441/com.example.gytis.imlost E/AndroidRuntime: FATAL EXCEPTION: main

Process: com.example.gytis.imlost, PID: 21441

java.lang.RuntimeException: Error receiving broadcast Intent { act=android.net.wifi.SCAN_RESULTS flg=0x4000010 (has extras) } in com.example.gytis.imlost.MainActivity$1$1@a300383

at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:935)

at android.os.Handler.handleCallback(Handler.java:739)

at android.os.Handler.dispatchMessage(Handler.java:95)

at android.os.Looper.loop(Looper.java:148)

at android.app.ActivityThread.main(ActivityThread.java:5527)

at java.lang.reflect.Method.invoke(Native Method)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)

Caused by: java.lang.IndexOutOfBoundsException: Invalid index 2, size is 2

at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)

at java.util.ArrayList.get(ArrayList.java:308)

at com.example.gytis.imlost.MainActivity$1$1.onReceive(MainActivity.java:110)

at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:925)

at android.os.Handler.handleCallback(Handler.java:739)

at android.os.Handler.dispatchMessage(Handler.java:95)

at android.os.Looper.loop(Looper.java:148)

at android.app.ActivityThread.main(ActivityThread.java:5527)

at java.lang.reflect.Method.invoke(Native Method)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)

请帮忙.谢谢!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值