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 android-security-discuss+unsubscr...@googlegroups.com.
To post to this group, send email to android-security-discuss@googlegroups.com.
Visit this group at http://groups.google.com/group/android-security-discuss.
For more options, visit https://groups.google.com/d/optout.

Reply via email to