Android Studio ping局域网中的所有设备

Android Studio ping局域网中的所有设备,android,Android,我创建了android应用程序来扫描和显示listview中连接到lan的所有设备的ip地址。 当我按下按钮启动扫描设备时,它不会在listView中显示任何设备!我在AndroidManifest中添加了internet权限! 有人能帮我解决这个问题吗 private Button btnScan; private ListView listViewIp; private String defaultGateway = ""; DhcpInfo dhcp;

我创建了android应用程序来扫描和显示listview中连接到lan的所有设备的ip地址。 当我按下按钮启动扫描设备时,它不会在listView中显示任何设备!我在AndroidManifest中添加了internet权限! 有人能帮我解决这个问题吗

    private Button btnScan;
    private ListView listViewIp;
    private String defaultGateway = "";
    DhcpInfo dhcp;
    WifiManager manager;
    ArrayList<String> ipList;
    ArrayAdapter<String> adapter;

    public ServersFragment()
    {
        // Required empty public constructor
    }

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState)
{
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_servers, container, false);

    btnScan = (Button) view.findViewById(R.id.readclient);
    listViewIp = (ListView) view.findViewById(R.id.listviewip);

    ipList = new ArrayList();
    adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, android.R.id.text1, ipList);
    listViewIp.setAdapter(adapter);

    btnScan.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            new ScanIpTask().execute();
        }
    });

    manager = (WifiManager) getActivity().getApplicationContext().getSystemService(Context.WIFI_SERVICE);
    dhcp = manager.getDhcpInfo();
    defaultGateway = Formatter.formatIpAddress(dhcp.gateway);

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
    SharedPreferences.Editor editor = prefs.edit();
    editor.putString("defaultGateway", defaultGateway);
    editor.commit();

    return view;
}


private class ScanIpTask extends AsyncTask<Void, String, Void>
{
    int timeout = 1000;

    @Override
    protected void onPreExecute()
    {
        ipList.clear();
        adapter.notifyDataSetInvalidated();
        Toast.makeText(getActivity(), "Scan IP...", Toast.LENGTH_LONG).show();

        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
        String defaultGateway = prefs.getString("defaultGateway", "");

        defaultGateway = defaultGateway.substring(0, 9) + ".";
    }

    @Override
    protected Void doInBackground(Void... params)
    {
        for (int i = 0; i <= 255; i++)
        {
            String host = defaultGateway + i;
            System.out.println("host: " + host);
            try
            {
                InetAddress inetAddress = InetAddress.getByName(host);
                if (inetAddress.isReachable(timeout))
                {
                    publishProgress(inetAddress.toString());
                }

            } catch (UnknownHostException e)
            {
                e.printStackTrace();
            } catch (IOException e)
            {
                e.printStackTrace();
            }
        }

        return null;
    }

    @Override
    protected void onProgressUpdate(String... values)
    {
        ipList.add(values[0]);
        adapter.notifyDataSetInvalidated();
        Toast.makeText(getActivity(), values[0], Toast.LENGTH_LONG).show();
    }

    @Override
    protected void onPostExecute(Void aVoid)
    {
        Toast.makeText(getActivity(), "Done", Toast.LENGTH_LONG).show();
    }
}
专用按钮btnScan;
私有ListView listViewIp;
私有字符串defaultGateway=“”;
DhcpInfo-dhcp;
wifi经理;
ArrayList ipList;
阵列适配器;
公共服务器片段()
{
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState)
{
//为该碎片膨胀布局
视图=充气机。充气(R.layout.fragment\u服务器,容器,错误);
btnScan=(按钮)view.findviewbyd(R.id.readclient);
listViewIp=(ListView)view.findViewById(R.id.listViewIp);
ipList=新的ArrayList();
adapter=new ArrayAdapter(getActivity(),android.R.layout.simple_list_item_1,android.R.id.text1,ipList);
setAdapter(适配器);
btnScan.setOnClickListener(新视图.OnClickListener()
{
@凌驾
公共void onClick(视图v)
{
新建ScanIpTask().execute();
}
});
manager=(WifiManager)getActivity().getApplicationContext().getSystemService(Context.WIFI_服务);
dhcp=manager.getDhcpInfo();
defaultGateway=Formatter.formatIpAddress(dhcp.gateway);
SharedReferences prefs=PreferenceManager.GetDefaultSharedReferences(getActivity());
SharedReferences.Editor=prefs.edit();
putString(“defaultGateway”,defaultGateway);
commit();
返回视图;
}
私有类ScaniptTask扩展异步任务
{
int超时=1000;
@凌驾
受保护的void onPreExecute()
{
ipList.clear();
adapter.notifyDataSetInvalidated();
Toast.makeText(getActivity(),“扫描IP…”,Toast.LENGTH_LONG.show();
SharedReferences prefs=PreferenceManager.GetDefaultSharedReferences(getActivity());
字符串defaultGateway=prefs.getString(“defaultGateway”,”);
defaultGateway=defaultGateway.substring(0,9)+“;
}
@凌驾
受保护的Void doInBackground(Void…参数)
{
对于(int i=0;i