Sorunum olduğunda, siz gerçekten yardımcı oldunuz. Yani burada tekrar düştüğüm başka bir sorunla karşılaşıyorum ...:/getBoolean (EXTRA_NO_CONNECTIVITY) her zaman false döndürür
BroadcastReceiver'ı genişleten özel bir NetworkReceiver çalıştırıyorum. Telefonun internet bağlantısının ne zaman olduğunu belirlemek istiyorum, böylece ne zaman olursa olsun bir servis başlatabilirim. Ben konuların bir sürü ve benim için DOESNT'İŞ tüm başlıkları az ya da çok hızlı aşağıdaki koda okudum:
public class NetworkReceiver extends BroadcastReceiver {
private static final String tag = NetworkReceiver.class.getSimpleName();
@Override
public void onReceive(Context context, Intent intent) {
Log.i(tag,"****** NetworkReceiver // onReceive()");
boolean noConnection = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
Log.i(tag,"****** NetworkReceiver // Network Down?: " + intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false));
}
// TODO Bug: Never stops the service. Stays always connected!
if(noConnection) {
Log.i(tag,"****** NetworkReceiver // Stopping Service...");
context.stopService(new Intent(context, FetchService.class));
} else {
Log.i(tag,"****** NetworkReceiver // Starting Service!");
context.startService(new Intent(context, FetchService.class));
}
}
Ben sorun logcat hep NetworkDown?: false
döndürür ve hizmet asla durur olduğunu (o her zaman yeniden başlatır). Emitörde F8'e basarak denedim ve ayrıca yönlendiriciyi kapatarak dev telefonumda (SIM, internet erişimi wifi router'ım tarafından da denendi) çalıştırarak çalıştı -> İnternet erişimi garanti edilmiyor! intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false)
intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, true)
için:
...
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<receiver android:name=".NetworkReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
...
Ben de çizgiyi değişmiş ben de hiçbir değişiklik olmadan ve bu benim manifest dosyasında <action android:name="android.net.ConnectivityManager.CONNECTIVITY_ACTION" />
çalıştı dikkat etmelidir:
Benim Manifest aşağıdaki satırları içerir Sonuç her zaman doğruydu - ve böylece her zaman hizmetimi durdurmaya çalıştı ve asla başlamadı.
Niyet'ten gelen Ekstraların hiç okunmadığından şüpheleniyorum ve bu nedenle getBooleanExtra()
varsayılan değeri her zaman geri dönüyor.
PS. Ben Android'im var
Teşekkürler!
Kullandığınız yöntemin farkındayım. Ancak, bir çok insanın benim kullandığım kodu tavsiye etmesi beni şaşırtmıştı (ayrıca son zamanlarda Android'de satın aldığım bir O'reilly kitabında okudum!)) CONNECTIVITY_ACTION yayınında bir çözüm bulamıyorsam, örneğinizi takip edeceğimi ve Servisim'de ConnectivityManager'ın yöntemleri ile bir kontrol yapacağımı düşünüyorum. Cevabınız için teşekkürler :) – snoopaki
Snoopaki'ye hoş geldiniz - aslında yönteminizi kullanarak bir çözüm ile gelmeyi tercih ederim, ama ne olduğunu ve neden olduğunu göremiyorum. – Shlublu
Hizmetimi bir IntentService olarak değiştirdim ve bağlantı değişiminin hizmet içi kullanımı daha anlamlı hale geldi. Bu yüzden cevabını doğru olanı seçmeliyim! thx :) – snoopaki