Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java BroadcastReceiver未向Intent注册-Wifi扫描_Java_Android_Android Intent_Broadcastreceiver_Android Wifi - Fatal编程技术网

Java BroadcastReceiver未向Intent注册-Wifi扫描

Java BroadcastReceiver未向Intent注册-Wifi扫描,java,android,android-intent,broadcastreceiver,android-wifi,Java,Android,Android Intent,Broadcastreceiver,Android Wifi,我已经设置了一个基本的应用程序来扫描和显示范围内Wifi AP的详细信息。每当扫描完成时,我使用广播接收器刷新列表。但是,接收器未注册为。startScan()以及从内置GUI启动扫描都不会触发接收器的onReceive()方法 这是我的代码: public class MainActivity extends Activity { WifiManager mainWifi; IntentFilter filter; boolean intentIsRegistered

我已经设置了一个基本的应用程序来扫描和显示范围内Wifi AP的详细信息。每当扫描完成时,我使用广播接收器刷新列表。但是,接收器未注册为。startScan()以及从内置GUI启动扫描都不会触发接收器的onReceive()方法

这是我的代码:

public class MainActivity extends Activity {

    WifiManager mainWifi;
    IntentFilter filter;
    boolean intentIsRegistered = false;

    private BroadcastReceiver wifiEventReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.e("DEBUG", "Update received!");
            if(intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
                Log.e("DEBUG","SCAN_RESULTS_AVAILABLE_ACTION");
                List<ScanResult> li = mainWifi.getScanResults();
                for (int i=0; i<li.size(); i++) {
                    Log.e("DEBUG","ssid: "+li.get(i).SSID+" bssid: "+li.get(i).BSSID+" cap: "+li.get(i).capabilities+" level: "+li.get(i).level+ "chan: "+li.get(i).frequency);
                }
            }
        }
    };

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

       // Button wifiConnect = (Button)findViewById(R.id.WifiConnect);
        mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);

        if(mainWifi.isWifiEnabled()==false){
            Log.e("DEBUG","turning on wifi");
            Toast.makeText(getApplicationContext(), "Enabling Wifi...",
                    Toast.LENGTH_LONG).show();
            mainWifi.setWifiEnabled(true);
        } else {
            Log.e("DEBUG","wifi is on");
        }

        if (mainWifi.startScan() == false) {
            Log.e("Error","Scanning could not start");
        } else {
            Log.e("DEBUG", "Scanning has started");
//            mainText.setText("Starting Scan...");
        }


        filter = new IntentFilter();
        filter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
        registerReceiver(wifiEventReceiver, filter);
        intentIsRegistered = true;
    }

    public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(0, 0, 0, "Refresh");
        return super.onCreateOptionsMenu(menu);
    }

    public boolean onMenuItemSelected(int featureId, MenuItem item) {
        mainWifi.startScan();
        return super.onMenuItemSelected(featureId, item);
    }

    @Override
    public void onPause() {
        super.onPause();
        if (intentIsRegistered==true) {
            unregisterReceiver(wifiEventReceiver);
            intentIsRegistered = false;
        }
    }


    @Override
    public void onResume() {
        super.onResume();
        if (intentIsRegistered==false) {
            registerReceiver(wifiEventReceiver, filter);
            intentIsRegistered = true;
        }
    }
}

你有适当的许可吗?有。查看清单。我要做的第一件事是重新排列代码。在开始扫描之前注册接收者。是的,我在发布问题后才意识到这一点。但仍然没有有利的结果。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.wifitester"
    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"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.android.wifitester.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>

</manifest>
09-04 16:49:21.866    1606-1901/system_process I/ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.wifitester/.MainActivity bnds=[240,408][240,408]} from pid 25719
09-04 16:49:22.405    1606-1806/system_process I/ActivityManager: Start proc com.android.wifitester for activity com.android.wifitester/.MainActivity: pid=4209 uid=10086 gids={50086, 1028}
09-04 16:49:22.702    4209-4209/com.android.wifitester E/DEBUG: wifi is on
09-04 16:49:22.702    4209-4209/com.android.wifitester E/DEBUG: Scanning has started
09-04 16:49:22.796    4209-4209/com.android.wifitester D/libEGL: loaded /system/lib/egl/libEGL_POWERVR_SGX530_125.so
09-04 16:49:22.843    4209-4209/com.android.wifitester D/libEGL: loaded /system/lib/egl/libGLESv1_CM_POWERVR_SGX530_125.so
09-04 16:49:22.866    4209-4209/com.android.wifitester D/libEGL: loaded /system/lib/egl/libGLESv2_POWERVR_SGX530_125.so
09-04 16:49:22.937    4209-4209/com.android.wifitester D/OpenGLRenderer: Enabling debug mode 0
09-04 16:49:23.038    1606-1622/system_process I/ActivityManager: Displayed com.android.wifitester/.MainActivity: +994ms (total +10s108ms)