Skip to content
Snippets Groups Projects
Commit 57cdcb8c authored by Tazkirah Amaliah's avatar Tazkirah Amaliah
Browse files

fix:network sensing

parent 91bd91f2
Branches
Tags
No related merge requests found
Pipeline #61503 canceled with stages
package com.example.myapplication
import android.annotation.SuppressLint
import android.content.Intent
import android.net.ConnectivityManager
import android.net.NetworkCapabilities
import android.os.Build
import android.os.Bundle
import android.util.DisplayMetrics
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.AppCompatButton
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import com.example.myapplication.repositories.PrefRepositories
......@@ -60,5 +69,57 @@ class LoginActivity : AppCompatActivity() {
buttonLogin.text = "Masuk"
}
}
if (networkAvailable()) {
Toast.makeText(this,"Internet is available",Toast.LENGTH_SHORT).show()
}else {
internetDialog()
}
}
private fun networkAvailable():Boolean{
val connectivityManager = getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager
if (connectivityManager !=null){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q){
val networkCapabilities = connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork)
if (networkCapabilities !=null){
return if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)){
true
}else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)){
true
}else networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)
}
}else{
val cm = getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager
val networkInfo = cm.activeNetworkInfo
return networkInfo !=null && networkInfo.isConnectedOrConnecting
}
}
return false
}
@SuppressLint("UseCompatLoadingForDrawables")
fun internetDialog() {
val displayMetrics = DisplayMetrics()
windowManager.defaultDisplay.getMetrics(displayMetrics)
val width = displayMetrics.widthPixels * 0.75
val height = displayMetrics.heightPixels * 0.3
val builder = AlertDialog.Builder(this)
val view = LayoutInflater.from(this).inflate(R.layout.check_internet_dialog, null)
builder.setView(view)
val btnRetry = view.findViewById<AppCompatButton>(R.id.btnRetry)
val dialog = builder.create()
dialog.show()
dialog.window!!.setLayout(width.toInt(), height.toInt())
dialog.setCancelable(false)
dialog.window!!.setGravity(Gravity.CENTER)
dialog.window!!.setBackgroundDrawable(this.resources.getDrawable(R.drawable.internet_dialog))
btnRetry.setOnClickListener {
dialog.dismiss()
if (networkAvailable()) {
Toast.makeText(this,"Internet is available", Toast.LENGTH_SHORT).show()
} else {
internetDialog()
}
}
}
}
\ No newline at end of file
......@@ -21,14 +21,22 @@ import android.content.Intent
import android.content.IntentFilter
import android.util.Log
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import android.net.Network
import android.net.NetworkRequest
class MainActivity : AppCompatActivity() {
private lateinit var randomTransactionReceiver: BroadcastReceiver
private var isConnected: Boolean = false
private lateinit var connectivityManager: ConnectivityManager
private lateinit var networkCallback: ConnectivityManager.NetworkCallback
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
connectivityManager = getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager
setupNetworkCallback()
val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController
val bottomNavigationView = findViewById<BottomNavigationView>(R.id.bottom_navigation)
......@@ -52,62 +60,100 @@ class MainActivity : AppCompatActivity() {
randomTransactionReceiver, IntentFilter("com.example.myapplication.RANDOM_TRANSACTION")
)
if (networkAvailable()) {
Toast.makeText(this,"Internet is available",Toast.LENGTH_SHORT).show()
}else {
internetDialog()
}
}
// if (networkAvailable()) {
// Toast.makeText(this,"Internet is available",Toast.LENGTH_SHORT).show()
// }else {
// internetDialog()
// }
override fun onDestroy() {
Log.d("MainActivity", "onDestroy called")
LocalBroadcastManager.getInstance(this).unregisterReceiver(randomTransactionReceiver)
super.onDestroy()
}
private fun networkAvailable():Boolean{
val connectivityManager = getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager
if (connectivityManager !=null){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q){
val networkCapabilities = connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork)
if (networkCapabilities !=null){
return if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)){
true
}else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)){
true
}else networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)
private fun setupNetworkCallback() {
networkCallback = object : ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network) {
if (!isConnected) {
isConnected = true
showToast("Internet is available")
}
}
override fun onLost(network: Network) {
if (isConnected && !isNetworkAvailable()) {
isConnected = false
showToast("Internet connection lost")
}
}else{
val cm = getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager
val networkInfo = cm.activeNetworkInfo
return networkInfo !=null && networkInfo.isConnectedOrConnecting
}
}
return false
val networkRequest = NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.build()
connectivityManager.registerNetworkCallback(networkRequest, networkCallback)
}
@SuppressLint("UseCompatLoadingForDrawables")
fun internetDialog() {
val displayMetrics = DisplayMetrics()
windowManager.defaultDisplay.getMetrics(displayMetrics)
val width = displayMetrics.widthPixels * 0.75
val height = displayMetrics.heightPixels * 0.3
val builder = AlertDialog.Builder(this)
val view = LayoutInflater.from(this).inflate(R.layout.check_internet_dialog, null)
builder.setView(view)
val btnRetry = view.findViewById<AppCompatButton>(R.id.btnRetry)
val dialog = builder.create()
dialog.show()
dialog.window!!.setLayout(width.toInt(), height.toInt())
dialog.setCancelable(false)
dialog.window!!.setGravity(Gravity.CENTER)
dialog.window!!.setBackgroundDrawable(this.resources.getDrawable(R.drawable.internet_dialog))
btnRetry.setOnClickListener {
dialog.dismiss()
if (networkAvailable()) {
Toast.makeText(this,"Internet is available", Toast.LENGTH_SHORT).show()
} else {
internetDialog()
}
private fun showToast(message: String) {
runOnUiThread {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
}
}
private fun isNetworkAvailable(): Boolean {
val networkCapabilities = connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork) ?: return false
return networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) ||
networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) ||
networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)
}
override fun onDestroy() {
Log.d("MainActivity", "onDestroy called")
LocalBroadcastManager.getInstance(this).unregisterReceiver(randomTransactionReceiver)
super.onDestroy()
connectivityManager.unregisterNetworkCallback(networkCallback)
}
// private fun networkAvailable():Boolean{
// val connectivityManager = getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager
// if (connectivityManager !=null){
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q){
// val networkCapabilities = connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork)
// if (networkCapabilities !=null){
// return if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)){
// true
// }else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)){
// true
// }else networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)
// }
// }else{
// val cm = getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager
// val networkInfo = cm.activeNetworkInfo
// return networkInfo !=null && networkInfo.isConnectedOrConnecting
// }
// }
// return false
// }
// @SuppressLint("UseCompatLoadingForDrawables")
// fun internetDialog() {
// val displayMetrics = DisplayMetrics()
// windowManager.defaultDisplay.getMetrics(displayMetrics)
// val width = displayMetrics.widthPixels * 0.75
// val height = displayMetrics.heightPixels * 0.3
// val builder = AlertDialog.Builder(this)
// val view = LayoutInflater.from(this).inflate(R.layout.check_internet_dialog, null)
// builder.setView(view)
// val btnRetry = view.findViewById<AppCompatButton>(R.id.btnRetry)
// val dialog = builder.create()
// dialog.show()
// dialog.window!!.setLayout(width.toInt(), height.toInt())
// dialog.setCancelable(false)
// dialog.window!!.setGravity(Gravity.CENTER)
// dialog.window!!.setBackgroundDrawable(this.resources.getDrawable(R.drawable.internet_dialog))
// btnRetry.setOnClickListener {
// dialog.dismiss()
// if (networkAvailable()) {
// Toast.makeText(this,"Internet is available", Toast.LENGTH_SHORT).show()
// } else {
// internetDialog()
// }
//}
// }
}
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment