0
ArrayList<HashMap<String, Object>> itemList;    
btnSelectWiFi.setOnClickListener(v -> {
    try {
        AlertDialog.Builder builder = new AlertDialog.Builder(activity);
        builder.setTitle("WiFi");
        ListView list = new ListView(activity);
        list.setAdapter(new CustomListAdapter(activity));
        list.setOnItemClickListener((arg0, arg1, position, arg3) -> {
            if (dialog.isShowing()) {
                dialog.dismiss();
                tvNetworkName.setText((String) itemList.get(position).get("SSID"));
                networkName = (String) itemList.get(position).get("SSID");
                wifiSecurity = (String) itemList.get(position).get("security");
                networkSettings.setVisibility(View.VISIBLE);
            }
        });
        builder.setView(list);
        dialog = builder.create();
        dialog.show();
    } catch (Exception e) {
        e.printStackTrace();
    }

这里是填写可用 WiFi 连接列表的代码:

public class CustomListAdapter extends BaseAdapter {
    private final LayoutInflater inflater;

    public CustomListAdapter(Context context) {
        this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        initListItems();
    }

    public void initListItems() {
        itemList = new ArrayList<>();
        List<ScanResult> scanResultsList = new ArrayList<>(); //wifiManager.getConfiguredNetworks();
        List<String> addedSSID = new ArrayList<>();

        for (ScanResult result : results) {
            if (!addedSSID.contains(result.SSID) && (result.SSID != null && !result.SSID.toLowerCase().contains("hh-"))) {
                scanResultsList.add(result);
                addedSSID.add(result.SSID);
            }
        }

        for (ScanResult scanResult : scanResultsList) {
            try {
                // exclude unnamed wifi
                if (scanResult.SSID == null || scanResult.SSID.length() == 0)
                    continue;

                HashMap<String, Object> map = new HashMap<String, Object>();
                map.put("SSID", scanResult.SSID.replace("\"", ""));
                map.put("BSSID", scanResult.BSSID);
                map.put("wifiConfiguration", scanResult);
                map.put("selected", false);
                itemList.add(map);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    @Override
    public int getCount() {
        return itemList.size();
    }

    @Override
    public Object getItem(int arg0) {
        return itemList.get(arg0);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        MainListHolder mHolder;

        View v = convertView;
        if (convertView == null) {
            mHolder = new MainListHolder();
            v = inflater.inflate(R.layout.wifi_entry_item, null);
            mHolder.tvNetworkName = v.findViewById(R.id.networkName);
            v.setTag(mHolder);
        } else {
            mHolder = (MainListHolder) v.getTag();
        }

        HashMap<String, Object> item = itemList.get(position);
        mHolder.tvNetworkName.setText((String) item.get("SSID"));
        return v;
    }

    class MainListHolder {
        private TextView tvNetworkName;
    }
}

当我在某些情况下按下按钮并且仅针对少数 Android 手机时,我得到了这个神秘的错误:

2022-01-26 13:12:42.383 E/InputConnectionWrapper: InputConnectionWrapper.waitForInputConnectionFutureInternal():1528 Failed to get the input connection call's result.
    java.util.concurrent.TimeoutException: Waited 100 milliseconds (plus 198307 nanoseconds delay) for lvf@fa860f3[status=PENDING, info=[task=[running=[RUNNING ON ICWrapper-1], hfn@72d81b0]]]
        at lsg.get(PG:50)
        at hfx.h(PG:2)
        at hfx.g(PG:2)
        at nxc.m(PG:6)
        at hgg.C(PG:1)
        at hgg.o(PG:1)
        at hgg.q(PG:5)
        at hfx.b(PG:14)
        at cvz.onUpdateSelection(PG:5)
        at android.inputmethodservice.InputMethodService$InputMethodSessionImpl.updateSelection(InputMethodService.java:1171)
        at android.inputmethodservice.IInputMethodSessionWrapper.executeMessage(IInputMethodSessionWrapper.java:111)
        at com.android.internal.os.HandlerCaller$MyHandler.handleMessage(HandlerCaller.java:44)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:246)
        at android.app.ActivityThread.main(ActivityThread.java:8653)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
2022-01-26 13:12:42.383 W/InputConnectionWrapper: InputConnectionWrapper.recordDuration():1491 IPC IC_GET_SURROUNDING_TEXT took 103 ms

真的,我无法理解这个堆栈跟踪,有什么帮助吗?

更新

这段代码正在打开一个对话框,用于选择 WiFi 连接。

此错误仅发生在特定手机(目前)华为。

4

0 回答 0