2016-04-04 11 views
0

'un herhangi bir Aktivite sınıfı'u genişletmemesi gerektiği uygulamayı yapmak istiyorum.Cihaz wi-Fi açıldığında Tost nasıl gösterilir BroadCastreceiver ve Service kullanarak mı?

Uygulamam arka planda çalışmalı ve cihazıma dokunduğumda Tost'u göstermeli Wi-Fi açık. NetworkUtil için Kodum burada

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; 
} 

}

Ve alıcı sınıfı burada. Bana tostu göstermeme yardım et.

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(); 
} 

}

** Ve benim Manifest olduğunu **

Android 3.1 ve üzeri, kullanıcı herhangi manifest- önce aktivitelerden birini başlatmak zorundadır On
<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

sen eklediniz bildirimdeki alıcılar etiketinde? – crashOveride

+0

evet efendim ekledim –

+0

Hala tost görünmüyor mu? Alıcının gelip gelmediğini kontrol ettiniz mi? Log.d ("someTag", "Receiver call"); onReceive yönteminde Şimdi, alıcıyı – crashOveride

cevap

0

Kayıtlı BroadcastReceiver çalışacaktır.

Android 3.1 sürüm notlarına, özellikle "Durdurulan uygulamalarda denetimleri başlat" bölümüne bakın. http://developer.android.com/about/versions/android-3.1.html Örnek bir etkinlik yapın ve deneyin. Çalışacak.

Etkinlik olmadan çalışmaz.

+0

Teşekkürler Efendim ama yine de bunu nasıl başarmanın bir yolu var? –