PDA

View Full Version : مشکل در چک Wifi در هنگام استفاده از BroadcastReceiver



hamedg1366
شنبه 08 فروردین 1394, 12:29 عصر
با سلام و تبریک سال نو به همه دوستان برنامه نویس.

هدفم اینه : وقتی کاربر wifi رو روشن کرد و به اینترنت وصل شد یه سری کار رو انجام بدم ،

دوستان با کدهای زیر وای فای و اینترنت چک میشه مشکل اینجاست که تا گوشی مودم رو شناسائی کنه چند ثانیه میگذره و توی این چند ثانیه مقدار false برگشت داده میشه (در ضمن نمیدونم چرا دوبار کلاس BroadcastReceiver اجرا میشه! یعنی دوبار مقدار false برای هر کدوم نمایش داده میشه)


شاید بشه با ایجاد وقفه در برنامه یا استفاده از تایمر به جواب رسید اما فک نمیکنم اصولی باشه ، لطفا راهنمائی بفرمائید چیکار کنم.


manifest

<receiver
android:name="com.example.contact1.NetworkChangeReceiver"
android:enabled="true" >
<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />

</intent-filter>
</receiver>


کلاس NetworkChangeReceiver
public class NetworkChangeReceiver extends BroadcastReceiver {

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

boolean a=isOnline(context
Toast.makeText(context, "internet="+a, Toast.LENGTH_LONG).show();

boolean b=wifiState(context);
Toast.makeText(context, "wifi="+b, Toast.LENGTH_LONG).show();

}

public boolean isOnline(Context context) {

ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERV ICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
return (netInfo != null && netInfo.isConnected());

}


public boolean wifiState(Context context) {

ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo activeNetwork = cm.getActiveNetworkInfo();

if (null != activeNetwork) {
if(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI)
return true;
}
return false;
}
}

peymanf11
شنبه 08 فروردین 1394, 14:53 عصر
دوست عزیز شما رویداد اشتباهی رو دارین گوش میدین:

فقط کافیه منیفست خودتون رو به این صورت تغییر بدین


<receiver android:name=".NetworkChangeReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>