Uygulamamın İnternet'e her bağlandığında ve tersi olduğunda bir şeyler yapması gerekiyor. Ancak, bu uygulamayı DIŞINDA yapmam gerekiyor. Stackoverflow hakkında bir sürü fikir ve yardım var ama uygulama her zaman WITHIN. AlarmManager'ın uygulama dışında çalıştığını biliyorum, ancak her 5 dakikada bir internet bağlantısının olup olmadığını kontrol etmeye çalışırsam sadece aküyü boşaltabiliyordum. İstediğim şey, bir şey indirmek için uygulamanın dışındaki bağlantıyı kontrol etmektir.Android İnternet Bağlantı denetleyicisi Uygulamanın DIŞARI
Ayrıca, Intent Service uygulamasının da dışında çalışabileceğini öğrendim. Bunu Wakeful Broadcast Receiver’ın içine koymaya çalıştım. Ancak, hala çağrılmıyor.
Dışarıda birisi bana yardımcı olabilir mi? Teşekkürler!
İşte benim Uykusuzken Yayını Alıcıpublic class ConnectivityOutsideAppReceiver extends WakefulBroadcastReceiver {
private static final String LOG_TAG = ConnectivityOutsideAppReceiver.class.getSimpleName();
private ConnectivityManager connectivityManager;
private static boolean connection = false;
@Override
public void onReceive(Context context, Intent intent){
ComponentName comp = new ComponentName(context.getPackageName(),
ConnectivityOutsideAppService.class.getName());
// Start the service, keeping the device awake while it is
// launching.
startWakefulService(context, (intent.setComponent(comp)
));
}
}
Bu
public class ConnectivityOutsideAppService IntentService uzanır Niyet Hizmetidir var {
private static final String LOG_TAG = ConnectivityOutsideAppService.class.getSimpleName();
private ConnectivityManager connectivityManager;
private static boolean connection = false;
private Context context;
public ConnectivityOutsideAppService() {
super(ConnectivityOutsideAppService.class.getSimpleName());
this.context = context;
}
@Override
protected void onHandleIntent(Intent intent) {
connectivityManager =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
checkConnectionOnDemand();
Log.e(LOG_TAG, " ## onHandleIntent##");
if (connection == true
&& intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY,
false)) {
Log.e(LOG_TAG, " ## connection == true ##");
connection = false;
} else if (connection == false
&& !intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY,
false)) {
Log.e(LOG_TAG, " ## connection == false ##");
connection = true;
}
ConnectivityOutsideAppReceiver.completeWakefulIntent(intent);
}
public static boolean hasConnection() {
return connection;
}
private void checkConnectionOnDemand() {
Log.e(LOG_TAG, " ## checkConnectionOnDemand ##");
final NetworkInfo info = connectivityManager.getActiveNetworkInfo();
if (info == null || info.getState() != NetworkInfo.State.CONNECTED) {
if (connection == true) {
Log.e(LOG_TAG, " ## connection == true ##");
connection = false;
}
} else {
if (connection == false) {
Log.e(LOG_TAG, " ## connection == false ##");
connection = true;
}
}
}
}
Bu benim Android Manifest
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<service
android:name="com.timetrackermobilelog.BusinessServices.ConnectivityOutsideAppService"
android:exported="false"/>
<receiver android:name="com.timetrackermobilelog.Utilities.ConnectivityOutsideAppService"
android:enabled="true"
android:process=":remote">
<intent-filter android:priority="1000" >
<action android:name="com.timetrackermobilelog.Utilities.ConnectivityOutsideAppService" />
<category android:name="com.Utilities" />
</intent-filter>
</receiver>
olduğunu
Alıcıyı Aktivitenin içine kaydetmeyi denedim ama işe yaramıyor.
IntentFilter intentFilter = new IntentFilter("com.pointwest.timetrackermobilelog.Utilities.ConnectivityOutsideAppReceiver");
ConnectivityOutsideAppReceiver connectivityOutsideAppReceiver = new ConnectivityOutsideAppReceiver();
registerReceiver(connectivityOutsideAppReceiver, intentFilter);
Kaçırdığım bir şey var mı?
(Özel işleminizin yerine http://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html#MonitorChanges). –
kodunuzda hata ayıklama var mı ..? Nerede sorun çıkarmalısın? –
Merhaba @MikeM. Bunu bir çıkaracağım ve size döneceğim. –