Exception reading Wifi/3G State

10,787

Solution 1

You've mispelled the latest 2 permissions:

useR-permission instead of useS-permission

Solution 2

Your manifest permissions are wrong.

you have user-permission instead of uses-permission

Share:
10,787
Marcos Vasconcelos
Author by

Marcos Vasconcelos

SOreadytohelp

Updated on August 08, 2022

Comments

  • Marcos Vasconcelos
    Marcos Vasconcelos almost 2 years

    Hi I have the following code that reads Network/Wifi state:

    public String getMacAddress() {
        WifiManager wm = (WifiManager) context
                .getSystemService(Context.WIFI_SERVICE);
        return wm.getConnectionInfo().getMacAddress();
    }
    

    This throws

    Caused by: java.lang.SecurityException: WifiService: Neither user 10032 nor current process has android.permission.ACCESS_WIFI_STATE
    

    And

    public boolean is3G() {
        ConnectivityManager connectivityManager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        return !(connectivityManager.getNetworkInfo(
                ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED || connectivityManager
                .getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED);
    }
    

    This throws

    Caused by: java.lang.SecurityException: ConnectivityService: Neither user 10032 nor current process has android.permission.ACCESS_NETWORK_STATE.
    

    Before someone tell me about the permissions, that is my Manifest (the relevant part):

    <manifest> 
       <!-- usual tags for activitys... etc.. -->
    
        <uses-permission android:name="android.permission.WRITE_OWNER_DATA" />
        <uses-permission android:name="android.permission.READ_OWNER_DATA" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.INTERNET" />
        <user-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <user-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    </manifest>