如何在Android中显示访问网络屏幕

时间:2016-07-06 03:10:48

标签: java android android-wifi wifimanager

我只想在我从列表中选择(触摸设备)网络时,应用程序会向我显示一个屏幕,我可以在其中键入密码和发送按钮。在android中访问网络的典型屏幕。

这是我的代码MainActivity和activity_main,它是布局:

MainActivity.java

package com.example.miguel.wifiacces;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.List;

public class MainActivity extends Activity  {
  ListView lv;
  WifiManager wifi;
  String wifis[];
  WifiScanReceiver wifiReciever;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    lv=(ListView)findViewById(R.id.listView);

    wifi=(WifiManager)getSystemService(Context.WIFI_SERVICE);
    wifiReciever = new WifiScanReceiver();
    wifi.startScan();
  }

  protected void onPause() {
    unregisterReceiver(wifiReciever);
    super.onPause();
  }

  protected void onResume() {
    registerReceiver(wifiReciever, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
    super.onResume();
  }

  private class WifiScanReceiver extends BroadcastReceiver{

    public void onReceive(Context c, Intent intent) {
      List<ScanResult> wifiScanList = wifi.getScanResults();
      wifis = new String[wifiScanList.size()];

      for(int i = 0; i < wifiScanList.size(); i++){
        wifis[i] = ((wifiScanList.get(i)).toString());
      }
      lv.setAdapter(new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1,wifis));

      String networkSSID = "test";
      String networkPass = "pass";

      WifiConfiguration conf = new WifiConfiguration();
      conf.SSID = "\"" + networkSSID + "\"";

      conf.preSharedKey = "\""+ networkPass +"\"";

      List<WifiConfiguration> list = wifi.getConfiguredNetworks();
      for( WifiConfiguration i : list ) {
        if(i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"")) {
          wifi.disconnect();
          wifi.enableNetwork(i.networkId, true);
          wifi.reconnect();
          break;
        }
      }
    }
  }
}

代码的最后一部分用于访问网络,这是我想要设置屏幕以输入密码的部分。

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:paddingLeft="@dimen/activity_horizontal_margin"
  android:paddingRight="@dimen/activity_horizontal_margin"
  android:paddingTop="@dimen/activity_vertical_margin"
  android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <TextView android:text="Wifi" android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:id="@+id/textview"
       android:textSize="35dp"
       android:layout_alignParentTop="true"
       android:layout_centerHorizontal="true" />

    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Lista de redes"
       android:id="@+id/textView"
       android:layout_below="@+id/textview"
       android:layout_centerHorizontal="true"
       android:textColor="#ff7aff24"
       android:textSize="35dp" />

    <ListView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:id="@+id/listView"
       android:background="#fff5d376"
       android:layout_below="@+id/textView"
       android:layout_alignParentLeft="true"
       android:layout_alignParentStart="true"
       android:layout_alignParentRight="true"
       android:layout_alignParentEnd="true"
       android:clickable="true" />

    <Button
       android:id="@+id/btnRefresh"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:background="@drawable/abc_list_longpressed_holo"
       android:text="Refresh"
       android:layout_alignParentBottom="true"
       android:layout_alignParentRight="true"
       android:layout_alignParentEnd="true" />

</RelativeLayout>

0 个答案:

没有答案