Android Otomatik İnternet Bağlantısı Kontrolü Nasıl Yapılır?

Merhaba arkadaşlar bu yazımda Anroid BroadcastReceiver ile internet kontrolünün nasıl otomatik yapılabileceğini anlatacağım.

Öncelikle projemize BroadcastReceiver ekliyoruz.

broadcastreceiverekle

Bu noktaya gelmişken BroadcastReceiver’in ne olduğunada değineyim. Arkadaşlar Anroid işletim sistemi bazı işlemlerde sisteme çağrı yayar. Mesela bir SMS aldığında işletim sistemi bütün uygulamalara “Ben bir SMS aldım” anlamında çağrı yapar. Bu çağrıyı BroadcastReceiverinda intent filterinde SmsReceive olan uygulamalar alabilir. Yani biz bir çağrıdan haberdar olmak istiyorsak bunu BroadcastReceiverimize eklemeliyiz. Şimdi bize internet değişikliğini haber almak istiyorsak bunu eklemeliyiz. Şimdi AndroidManifest dosyasını açıyoruz ve receiverimiza aşağıdaki intent filteri ekliyoruz.

<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
 

Bu eklediğimiz kod “Benim uygulamam bağlantı değişiklierinden haberdar olmak istiyor. Eğer bağlantıda bir değişikli olursa beni bilgilendir.” anlamına geliyor. Ama henüz bunun için izin istemedik. Şimdi ağ durumunu öğrenme iznimizi AndroidManifest’imize ekliyoruz.

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

AndroidManifest dosyamızın son hali aşağıdaki gibi olacak.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.gencaysahinn.internetkontrol">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:replace="android:icon,android:theme">
        
        
        <activity
            android:name=".MainActivity"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver
            android:name=".MyReceiver"
            android:enabled="true"
            android:exported="true">

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

Şimdi Java kısmına geçiyoruz.

package com.gencaysahinn.internetkontrol;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.util.Log;

public class MyReceiver extends BroadcastReceiver {   

    public MyReceiver() {

    }

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO: This method is called when the BroadcastReceiver is receiving
        
        if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
            Bundle bundle = intent.getExtras();
            if(bundle.getBoolean(ConnectivityManager.EXTRA_NO_CONNECTIVITY)){
                Log.e("İnternet Durumu"," YOK");
            }else{
                Log.e("İnternet Durumu","VAR");
            }
        }
    }
}

Bu şekilde işlemlerimizi tamamlamış oluyoruz. Sorunla karşılaşırsanız veya anlaşılmayan kısım varsa yorum olarak sorabilirsiniz.

One thought on “Android Otomatik İnternet Bağlantısı Kontrolü Nasıl Yapılır?”

Leave a Reply

Your email address will not be published. Required fields are marked *