2016-04-04 5 views
0

Ich möchte Anwendung, dass sollte keine Aktivität Klasse erweitern.So zeigen Sie Toast an, wenn das WLAN von Gerät mit BroadCastreceiver und Service aktiviert wird?

Meine Anwendung muss im Hintergrund ausgeführt werden und Toast zeigen, wenn ich mein Gerät WLAN eingeschaltet berühren. Mein Code für NetworkUtil ist hier

public class NetworkUtil { 

public static int TYPE_WIFI = 1; 
public static int TYPE_MOBILE = 2; 
public static int TYPE_NOT_CONNECTED = 0; 


public static int getConnectivityStatus(Context context) { 
    ConnectivityManager cm = (ConnectivityManager) context 
      .getSystemService(Context.CONNECTIVITY_SERVICE); 

    NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
    if (null != activeNetwork) { 
     if(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) 
      return TYPE_WIFI; 

     if(activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) 
      return TYPE_MOBILE; 
    } 
    return TYPE_NOT_CONNECTED; 
} 

public static String getConnectivityStatusString(Context context) { 
    int conn = NetworkUtil.getConnectivityStatus(context); 
    String status = null; 
    if (conn == NetworkUtil.TYPE_WIFI) { 
     status = "Wifi enabled"; 
    } else if (conn == NetworkUtil.TYPE_MOBILE) { 
     status = "Mobile data enabled"; 
    } else if (conn == NetworkUtil.TYPE_NOT_CONNECTED) { 
     status = "Not connected to Internet"; 
    } 
    return status; 
} 

}

und Empfänger-Klasse ist hier. Bitte helfen Sie mir, Toast zu zeigen.

public class NetworkChangeReceiver extends BroadcastReceiver { 

@Override 
public void onReceive(final Context context, final Intent intent) { 

    String status = NetworkUtil.getConnectivityStatusString(context); 

    Toast.makeText(context, status, Toast.LENGTH_LONG).show(); 
} 

}

** und mein Manifest ist **

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="net.viralpatel.network" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="15" 
    android:targetSdkVersion="23" /> 

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <receiver 
     android:name="net.viralpatel.network.NetworkChangeReceiver" 
     android:label="NetworkChangeReceiver" > 
     <intent-filter> 
      <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
      <action android:name="android.net.wifi.WIFI_STATE_CHANGED" /> 
     </intent-filter> 
    </receiver> 
</application> 

+0

hinzugefügt haben im Empfänger-Tag im Manifest? – crashOveride

+0

jawohl ich habe hinzugefügt –

+0

Noch ist der Toast nicht sichtbar? Hast du überprüft, ob der Empfänger angerufen wird? Add Log.d ("someTag", "Empfänger angerufen"); in OnReceive Methode Jetzt ändern Sie das WLAN und überprüfen Sie Logcat, wenn der Empfänger wird – crashOveride

Antwort

0

auf Android 3.1 und höher, muss der Benutzer einen Ihrer Aktivitäten starten, bevor eine manifest- registrierte BroadcastReceiver wird funktionieren.

Weitere Informationen finden Sie in den Android 3.1-Versionshinweisen, insbesondere im Abschnitt "Startsteuerelemente bei gestoppten Anwendungen". http://developer.android.com/about/versions/android-3.1.html Machen Sie eine Beispielaktivität und versuchen Sie es. Wird funktionieren.

Ohne Aktivität wird es nicht funktionieren.

+0

Danke Sir aber immer noch gibt es irgendeinen Weg dies zu erreichen wie? –

Verwandte Themen