Merhaba sorunum açıkca şu uygulama içinde gezerken internet bağlantısı koptuğunda bir aktiviteye yönlendirmek istiyorum
Toast mesaja kadar hallettim ancak aktiviteye aktarmada sorun yaşıyorum
MainActivity.java
package com.example.davulgablog.view;
import static android.widget.GridLayout.HORIZONTAL;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.widget.ImageView;
import android.widget.Toast;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.widget.ViewPager2;
import com.example.davulgablog.R;
import com.example.davulgablog.adapter.AnasayfaAdapter;
import com.example.davulgablog.adapter.CarouselSliderAdapter;
import com.example.davulgablog.adapter.InternetConnAdapter;
import com.example.davulgablog.databinding.ActivityMainBinding;
import com.example.davulgablog.model.AnasayfaButton;
import java.util.ArrayList;
import jp.wasabeef.blurry.Blurry;
public class MainActivity extends AppCompatActivity {
ActivityMainBinding anasayfa;
AnasayfaAdapter buttonAdapter;
ArrayList<Uri> imageList;
CarouselSliderAdapter carousel;
InternetConnAdapter connect;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
anasayfa=ActivityMainBinding.inflate(getLayoutInflater());
setContentView(anasayfa.getRoot());
connect = new InternetConnAdapter(MainActivity.this);
connect.connectionControl();
if(connect.getBool()){
Toast.makeText(MainActivity.this, "Connection Available", Toast.LENGTH_SHORT).show();
}
}
}InternetConnAdapter.java
package com.example.blog.adapter;
import static androidx.core.content.ContextCompat.registerReceiver;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import android.os.Build;
import android.view.LayoutInflater;
import android.widget.Toast;
import androidx.annotation.NonNull;
import com.example.davulgablog.R;
import com.example.davulgablog.databinding.NoConnectBinding;
import com.example.davulgablog.view.MainActivity;
import com.example.davulgablog.view.Noconnect;
public class InternetConnAdapter extends AppCompatActivity{
public Boolean bool=false;
Context context;
public InternetConnAdapter(){
super();
}
public InternetConnAdapter(Context context){
super();
this.context=context;
}
public static void checkNetworkInfo(Context context, final OnConnectionStatusChange onConnectionStatusChange){
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
if (capabilities == null){
onConnectionStatusChange.onChange(false);
}
connectivityManager.registerDefaultNetworkCallback(new ConnectivityManager.NetworkCallback(){
@Override
public void onAvailable(@NonNull Network network) {
onConnectionStatusChange.onChange(true);
}
@Override
public void onLost(@NonNull Network network) {
onConnectionStatusChange.onChange(false);
}
});
}
//for android version below Nougat api 24
else {
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
onConnectionStatusChange.onChange(networkInfo!= null && networkInfo.isConnectedOrConnecting());
}
}
public void connectionControl(){
InternetConnAdapter.checkNetworkInfo(context, new InternetConnAdapter.OnConnectionStatusChange() {
@Override
public void onChange(boolean type) {
if(type){
// Toast.makeText(context, "Connection Available", Toast.LENGTH_SHORT).show();
bool=true;
}else{
bool=false;
Toast.makeText(context, "Connection Not Available", Toast.LENGTH_SHORT).show();
//setContentView(R.layout.no_connect);
Intent ib=new Intent(context.this,Noconnect.class);
startActivity(ib);
set
}
}
});
}
public boolean getBool(){
return bool;
}
public interface OnConnectionStatusChange{
void onChange(boolean type);
}
}
Sorun çözülmüştür. Çözüm olarak kullandığım yöntem
package com.example.davulgablog.adapter;
import static androidx.core.content.ContextCompat.registerReceiver;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import android.os.Build;
import android.os.Handler;
import android.view.LayoutInflater;
import android.widget.Toast;
import androidx.annotation.NonNull;
import com.example.davulgablog.R;
import com.example.davulgablog.databinding.NoConnectBinding;
import com.example.davulgablog.view.MainActivity;
import com.example.davulgablog.view.Noconnect;
public class InternetConnAdapter extends AppCompatActivity{
public Boolean bool=false;
Context context;
public InternetConnAdapter(){
}
public InternetConnAdapter(Context context){
this.context=context;
}
public static void checkNetworkInfo(Context context, final OnConnectionStatusChange onConnectionStatusChange){
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
if (capabilities == null){
onConnectionStatusChange.onChange(false);
}
connectivityManager.registerDefaultNetworkCallback(new ConnectivityManager.NetworkCallback(){
@Override
public void onAvailable(@NonNull Network network) {
onConnectionStatusChange.onChange(true);
}
@Override
public void onLost(@NonNull Network network) {
onConnectionStatusChange.onChange(false);
}
});
}
//for android version below Nougat api 24
else {
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
onConnectionStatusChange.onChange(networkInfo!= null && networkInfo.isConnectedOrConnecting());
}
}
public void connectionControl(){
InternetConnAdapter.checkNetworkInfo(context, new InternetConnAdapter.OnConnectionStatusChange() {
@Override
public void onChange(boolean type) {
if(!type){
bool=false;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// Start the main activity after the splash screen duration
Intent intent = new Intent(context, Noconnect.class);
context.startActivity(intent);
// finish();
}
}, 0);
// Toast.makeText(context, "Connection Not Available", Toast.LENGTH_SHORT).show();
}
}
});
}
public boolean getBool(){
return bool;
}
public interface OnConnectionStatusChange{
void onChange(boolean type);
}
}Handler oluşturup 5sn bekletip yönlendirmek oldu.