Note that there are some explanatory texts on larger screens.

plurals
  1. PORunning a BroadcastReceiver continuously in the background to monitor network status..
    primarykey
    data
    text
    <p>i am writing an android application to continuously monitor the network in the background after every minute... i am using a BroadcastReceiver... it starts when the boot is completed.... and inside the BroadcastReceiver i am doing following things</p> <pre><code> a. Monitor Network b. check signal strength c. fetch longitude and latitude d. fetch phonenumber e. fetch operatorname and i am saving all the above information into a Database table.... </code></pre> <p>but unfortunately this application is giving me some errors when i install and run it on android device</p> <p>my BroadcastReceiver code is :-</p> <pre><code>public class NetworkInfoReceiver extends BroadcastReceiver{ private NetworkInfoVO networkInfoVO = new NetworkInfoVO(); private String strNetworkInfo = QualityofServiceConstants.DEFAULT_NETWORK_INFO; private SignalStrengthPhoneStateListner signalStrengthPhoneStateListner = new SignalStrengthPhoneStateListner(); @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "Started", Toast.LENGTH_SHORT).show(); ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); //Check Network status here if(networkInfo!=null &amp;&amp; networkInfo.isConnected()){ String networkState = getNetworkStateString(networkInfo.getState()); String stateString = networkInfo.toString().replace(',', '\n'); strNetworkInfo = String.format("Network Type: %s\n Network State: %s\n\n %s", networkInfo.getTypeName(),networkState,stateString); } //check signal strength here telephonyManager.listen(signalStrengthPhoneStateListner, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS); networkInfoVO.setNetworkInfo(strNetworkInfo); //get phonenumber here networkInfoVO.setPhoneNumber(telephonyManager.getLine1Number()); //get operator name here networkInfoVO.setServiceProvider(telephonyManager.getNetworkOperatorName()); //get signal strength here networkInfoVO.setSignalStrength(signalStrengthPhoneStateListner.getSignalStrengths()); //get latitude here networkInfoVO.setLatitude(String.valueOf(getGPS(context).getLatitude())); //get longitude here networkInfoVO.setLongitude(String.valueOf(getGPS(context).getLongitude())); networkInfoVO.setTime(new Date().toString()); new NetworkInfoDatabaseHelper(context).saveRecord(networkInfoVO); try { Thread.sleep(60000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private String getNetworkStateString(NetworkInfo.State state){ String stateString = QualityofServiceConstants.NETWORK_STATE_UNKNOWN; switch(state) { case CONNECTED: stateString = QualityofServiceConstants.NETWORK_STATE_CONNECTED; break; case CONNECTING: stateString = QualityofServiceConstants.NETWORK_STATE_CONNECTING; break; case DISCONNECTED: stateString = QualityofServiceConstants.NETWORK_STATE_DISCONNECTED; break; case DISCONNECTING: stateString = QualityofServiceConstants.NETWORK_STATE_DISCONNECTING; break; case SUSPENDED: stateString = QualityofServiceConstants.NETWORK_STATE_SUSPENDED; break; default: stateString = QualityofServiceConstants.NETWORK_STATE_UNKNOWN; break; } return stateString; } private Location getGPS(Context context){ LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); List&lt;String&gt;providers = locationManager.getProviders(true); Location location = null; for (int i = providers.size()-1; i &gt;= 0; i--){ location = locationManager.getLastKnownLocation(providers.get(i)); if(location!=null) break; } return location; } private class SignalStrengthPhoneStateListner extends PhoneStateListener{ private String signalStrengths; @Override public void onSignalStrengthsChanged(SignalStrength signalStrength) { super.onSignalStrengthsChanged(signalStrength); if(signalStrength.getGsmSignalStrength() &gt; 30){ signalStrengths = "Signal Strength :" + signalStrength.getGsmSignalStrength() + " Good"; }else if(signalStrength.getGsmSignalStrength() &gt; 20 &amp;&amp; signalStrength.getGsmSignalStrength() &lt; 30){ signalStrengths = "Signal Strength : " + signalStrength.getGsmSignalStrength() + " Average"; }else if(signalStrength.getGsmSignalStrength() &lt; 20){ signalStrengths = "Signal Strength : " + signalStrength.getGsmSignalStrength() + " Weak"; } } public String getSignalStrengths() { return signalStrengths; } } } </code></pre> <p>my manifest file is :-</p> <pre><code>&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android" package="compervazive.lognetworkinfo" android:versionCode="1" android:versionName="1.0" &gt; &lt;uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /&gt; &lt;uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/&gt; &lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/&gt; &lt;uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /&gt; &lt;uses-permission android:name="android.permission.READ_PHONE_STATE"/&gt; &lt;uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/&gt; &lt;uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/&gt; &lt;uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/&gt; &lt;uses-permission android:name="android.permission.ACCESS_CORSE_LOCATION"/&gt; &lt;application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" &gt; &lt;receiver android:name="com.example.qos.broadcastreceiver.NetworkInfoReceiver" &gt; &lt;intent-filter&gt; &lt;action android:name="android.intent.action._BOOT_COMPLETED"/&gt; &lt;action android:name="android.net.conn.CONNECTIVITY_CHANGE"/&gt; &lt;action android:name="android.net.wifi.WIFI_STATE_CHANGED"/&gt; &lt;action android:name="android.net.wifi.STATE_CHANGE"/&gt; &lt;action android:name="android.intent.action.SIG_STR"/&gt; &lt;/intent-filter&gt; &lt;/receiver&gt; &lt;/application&gt; &lt;/manifest&gt; </code></pre> <p>please let me know what is the problem in this.... Thanks for your time :-)</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload