I must use startCustomizedScan(ScanSettings requested) function. Request a
scan for access points in specified channel list. Each channel is specified
by its frequency in MHz, e.g. "2437"
My Full code is hear.
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button scanButton = (Button)findViewById(R.id.button1);
scanButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
WifiManager wifiManager =
(WifiManager)getSystemService(Context.WIFI_SERVICE);
ScanSettings scanSettings = new ScanSettings();
addWifiChannel(scanSettings, 11);
wifiManager.startCustomizedScan(scanSettings);
}
});
}
public WifiChannel createWifiChannel(int channel) {
WifiChannel wifiChannel = new WifiChannel();
wifiChannel.channelNum = channel;
//wifiChannel.freqMHz = getFrequencyFromChannel(channel);
return wifiChannel;
}
public void addWifiChannel(ScanSettings scanSettings, int channel) {
if (scanSettings.channelSet == null) scanSettings.channelSet = new
ArrayList<WifiChannel>();
scanSettings.channelSet.add(createWifiChannel(channel));
}
private final static ArrayList<Integer> channelsFrequency = new
ArrayList<Integer>(
Arrays.asList(0, 2412, 2417, 2422, 2427, 2432, 2437, 2442, 2447,
2452, 2457, 2462, 2467, 2472, 2484));
public static Integer getFrequencyFromChannel(int channel) {
return channelsFrequency.get(channel);
}
public static int getChannelFromFrequency(int frequency) {
return channelsFrequency.indexOf(Integer.valueOf(frequency));
}
}
My Manifaste file is here:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.custom.wifiscan"
android:sharedUserId="com.example.android"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="21"
android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission
android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.LOCATION_HARDWARE" />
But my aplication run real devices (LG G3 run in 5.0 ) application is stoped
09-12 19:08:00.391: E/AndroidRuntime(23766): FATAL EXCEPTION: main09-12
19:08:00.391: E/AndroidRuntime(23766): Process: com.custom.wifiscan, PID:
2376609-12 19:08:00.391: E/AndroidRuntime(23766): java.lang.SecurityException:
LocationHardware: Neither user 10246 nor current process has
android.permission.LOCATION_HARDWARE.09-12 19:08:00.391:
E/AndroidRuntime(23766): at
android.os.Parcel.readException(Parcel.java:1540)09-12 19:08:00.391:
E/AndroidRuntime(23766): at
android.os.Parcel.readException(Parcel.java:1493)09-12 19:08:00.391:
E/AndroidRuntime(23766): at
android.net.wifi.IWifiManager$Stub$Proxy.startScan(IWifiManager.java:984)09-12
19:08:00.391: E/AndroidRuntime(23766): at
android.net.wifi.WifiManager.startCustomizedScan(WifiManager.java:1037)09-12
19:08:00.391: E/AndroidRuntime(23766): at
com.custom.wifiscan.MainActivity$1.onClick(MainActivity.java:30)09-12
19:08:00.391: E/AndroidRuntime(23766): at
android.view.View.performClick(View.java:4763)09-12 19:08:00.391:
E/AndroidRuntime(23766): at
android.view.View$PerformClick.run(View.java:19821)09-12 19:08:00.391:
E/AndroidRuntime(23766): at
android.os.Handler.handleCallback(Handler.java:739)09-12 19:08:00.391:
E/AndroidRuntime(23766): at
android.os.Handler.dispatchMessage(Handler.java:95)09-12 19:08:00.391:
E/AndroidRuntime(23766): at android.os.Looper.loop(Looper.java:135)09-12
19:08:00.391: E/AndroidRuntime(23766): at
android.app.ActivityThread.main(ActivityThread.java:5274)09-12 19:08:00.391:
E/AndroidRuntime(23766): at java.lang.reflect.Method.invoke(Native
Method)09-12 19:08:00.391: E/AndroidRuntime(23766): at
java.lang.reflect.Method.invoke(Method.java:372)09-12 19:08:00.391:
E/AndroidRuntime(23766): at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909)09-12
19:08:00.391: E/AndroidRuntime(23766): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704)
android.permission.LOCATION_HARDWARE What does the error. How can I solve
this error Please someone give me some insight, Best respects, Thank.
--
You received this message because you are subscribed to the Google Groups
"Android Security Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/android-security-discuss.
For more options, visit https://groups.google.com/d/optout.