Android Wifi扫描应用程序持续崩溃,但未显示主要活动

Android Wifi扫描应用程序持续崩溃,但未显示主要活动,android,android-wifi,Android,Android Wifi,我正在编写一个应用程序来扫描可用的无线网络,但当我运行应用程序时,它甚至在显示主要活动之前就崩溃了。我也在寻找如何使用扫描结果,但我不确定我使用它的方式是否正确。 我读过关于广播接收器的书,但没有找到任何使用它的例子。 这是我的代码,非常感谢您的帮助 package com.example.wizer2; import java.util.List; import android.net.wifi.ScanResult; import android.net.wifi.WifiInfo; i

我正在编写一个应用程序来扫描可用的无线网络,但当我运行应用程序时,它甚至在显示主要活动之前就崩溃了。我也在寻找如何使用扫描结果,但我不确定我使用它的方式是否正确。 我读过关于广播接收器的书,但没有找到任何使用它的例子。 这是我的代码,非常感谢您的帮助

package com.example.wizer2;

import java.util.List;

import android.net.wifi.ScanResult;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class Wizer extends Activity {

WifiManager Wifi;
BroadcastReceiver receiver;
List<ScanResult> results;


Button bt1; //Current status
TextView t1; //for current status result


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_wizer);

    //GUI

    bt1=(Button)findViewById(R.id.b1);
    t1=(TextView)findViewById(R.id.t1);

     // to enable wifi service
    Wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);

    bt1.setOnClickListener(new View.OnClickListener() {

        public void onClick(View arg0) {

            WifiInfo info = Wifi.getConnectionInfo();
            if (info.getBSSID()==null)
            {
                t1.setText("You are currently not connected to any wireless network.\n");
            }
            else
            {
                t1.append("Current Status:\n");
                t1.append("Network Name :"+info.getSSID().toString()+"\n");
                t1.append("RSSI :"+info.getRssi()+"\n");

            }


        }
    });
    Wifi.startScan();
    // Register Broadcast Receiver
    if (receiver == null)
        receiver = new BroadcastReceiver() {

            @Override
            public void onReceive(Context context, Intent intent) {
                results =Wifi.getScanResults();
//              Intent I1 =new Intent();


            }
        };
        registerReceiver(receiver, new IntentFilter( WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_wizer, menu);
    return true;
}
public void onStop() {
    unregisterReceiver(receiver);
}
package com.example.wizer2;
导入java.util.List;
导入android.net.wifi.ScanResult;
导入android.net.wifi.WifiInfo;
导入android.net.wifi.WifiManager;
导入android.os.Bundle;
导入android.app.Activity;
导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.Intent;
导入android.content.IntentFilter;
导入android.view.Menu;
导入android.view.view;
导入android.widget.Button;
导入android.widget.TextView;
公共类Wizer扩展活动{
WifiManager-Wifi;
广播接收机;
列出结果;
按钮bt1;//当前状态
TextView t1;//用于当前状态结果
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wizer);
//桂
bt1=(按钮)findViewById(R.id.b1);
t1=(TextView)findViewById(R.id.t1);
//启用wifi服务
Wifi=(WifiManager)getSystemService(Context.Wifi\u服务);
bt1.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图arg0){
WifiInfo=Wifi.getConnectionInfo();
if(info.getBSSID()==null)
{
t1.setText(“您当前未连接到任何无线网络。\n”);
}
其他的
{
t1.追加(“当前状态:\n”);
t1.append(“网络名称:”+info.getSSID().toString()+“\n”);
t1.append(“RSSI:+info.getRssi()+”\n”);
}
}
});
Wifi.startScan();
//寄存器广播接收机
如果(接收器==null)
接收器=新的广播接收器(){
@凌驾
公共void onReceive(上下文、意图){
结果=Wifi.getScanResults();
//意向I1=新意向();
}
};
registerReceiver(接收器,新的意向过滤器(WifiManager.SCAN\u RESULTS\u AVAILABLE\u ACTION));
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.activity\u wizer,menu);
返回true;
}
公共void onStop(){
未注册接收人(接收人);
}

}

确保已添加

使用权限android:name=“android.permission.CHANGE\u WIFI\u STATE” 使用权限android:name=“android.permission.ACCESS\u WIFI\u STATE”


清单xml文件中的权限。

我只使用了您的代码,除了在清单文件中添加的权限外,没有做任何更改。它对我有用检查代码

public class MainActivity extends Activity {  WifiManager Wifi;
BroadcastReceiver receiver;
List<ScanResult> results; @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //GUI
    bt1=(Button)findViewById(R.id.btn1);
    t1=(TextView)findViewById(R.id.txt1);
     // to enable wifi service
    Wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
    bt1.setOnClickListener(new View.OnClickListener() {   public void onClick(View arg0) {
            WifiInfo info = Wifi.getConnectionInfo();
            if (info.getBSSID()==null)
            {
                t1.setText("You are currently not connected to any wireless network.\n");
            }
            else
            {
                t1.append("Current Status:\n");
                t1.append("Network Name :"+info.getSSID().toString()+"\n");
                t1.append("RSSI :"+info.getRssi()+"\n");

            }
        }
    });  Wifi.startScan();
    // Register Broadcast Receiver
    if (receiver == null)
        receiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                results =Wifi.getScanResults();
    //                Intent I1 =new Intent();
            }
        };
        registerReceiver(receiver, new IntentFilter( WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
}
/*@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_wizer, menu);
    return true;
}*/
public void onStop() {
    unregisterReceiver(receiver);
} }
公共类MainActivity扩展活动{WifiManager Wifi;
广播接收机;
列出结果;@Override
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//桂
bt1=(按钮)findViewById(R.id.btn1);
t1=(TextView)findViewById(R.id.txt1);
//启用wifi服务
Wifi=(WifiManager)getSystemService(Context.Wifi\u服务);
bt1.setOnClickListener(新视图.OnClickListener(){public void onClick(视图arg0){
WifiInfo=Wifi.getConnectionInfo();
if(info.getBSSID()==null)
{
t1.setText(“您当前未连接到任何无线网络。\n”);
}
其他的
{
t1.追加(“当前状态:\n”);
t1.append(“网络名称:”+info.getSSID().toString()+“\n”);
t1.append(“RSSI:+info.getRssi()+”\n”);
}
}
});Wifi.startScan();
//寄存器广播接收机
如果(接收器==null)
接收器=新的广播接收器(){
@凌驾
公共void onReceive(上下文、意图){
结果=Wifi.getScanResults();
//意向I1=新意向();
}
};
registerReceiver(接收器,新的意向过滤器(WifiManager.SCAN\u RESULTS\u AVAILABLE\u ACTION));
}
/*@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.activity\u wizer,menu);
返回true;
}*/
公共void onStop(){
未注册接收人(接收人);
} }
Manifest.xml

<?xml version="1.0" encoding="utf-8"?>  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.textoverlay"
android:versionCode="1"
android:versionName="1.0" >  <uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >  <activity
        android:name="com.example.textoverlay.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>  </application>


显示日志cat数据您是否有权限进入manifest@DjHacktorReborn我添加了权限。我应该从Logcat数据中获得什么?或者我应该如何查找错误日志。。崩溃添加它们后显示的异常在主activitymy Manifest.xml中显示任何内容之前它一直崩溃,除了我有这个额外的权限之外是相同的,这是导致问题的原因吗?