2016-07-03 26 views
1

私は何が間違っているのか分かりません。私はBroadcastReceiverを登録しました。私は定期的に呼ばれるonReceiveを得るが、私はWifiManagerからのスキャン結果が0である。スキャン結果がありません

wifi状態をログに出力しているので、常にWIFI_STATE_UNKNOWNになっています。 Wi-Fi設定で結果を確認すると、スキャン結果がたくさんあります。私は1つにつながっています。

受信機:

public class NetworkManager extends BroadcastReceiver { 
private final static String TAG = NetworkManager.class.getSimpleName(); 

private WifiManager access; 

private static NetworkManager manager; 
private List<WifiScanCallback> callbackList; 

public static NetworkManager getManager(Context context) { 
    if (manager == null) { 
     manager = new NetworkManager(); 
     manager.init(context); 
    } 

    return manager; 
} 

public void init(Context context){ 
    access = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
    callbackList = new ArrayList<>(); 
} 

public NetworkManager() { 
    manager = this; 
} 

@Override 
public void onReceive(Context context, Intent intent) { 
    int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN); 
    Log.d(TAG, "onReceive: "+intent); 
    debugWifiState(wifiState); 
    if(!isAccessNull()){ 
     List<ScanResult> result = access.getScanResults(); 
     if(callbackList != null && result != null && result.size() > 0 && callbackList.size() > 0){ 
      for(ScanResult currResult : result){ 
       Log.d(TAG, "onReceive: "+currResult.SSID); 
       for(WifiScanCallback callback : callbackList){ 
        String ssid = currResult.SSID; 
        callback.onResult(ssid, null); 
       } 
      } 

     } 
    } 
    scan(true); 
} 
} 

MainAcivity

@Override 
protected void onResume() { 
    super.onResume(); 
    networkManager = NetworkManager.getManager(this); 

    IntentFilter filter = new IntentFilter(); 
    filter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION); 
    registerReceiver(networkManager, filter); 

    networkManager.scan(true); 
} 

マニフェスト

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

答えて

1

あなたは、ランタイムのリクエスト権限に持っているのAndroid 6.0のように、この答えは私を助け:Answer

関連する問題