From ca03660184a10864e63af9a5a4e4f08b5db9263c Mon Sep 17 00:00:00 2001 From: gouri-panda Date: Mon, 16 Nov 2020 14:16:20 +0530 Subject: [PATCH 1/2] 2435 bug fixed --- .../kiwix/kiwixmobile/localFileTransfer/WifiDirectManager.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/WifiDirectManager.kt b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/WifiDirectManager.kt index b8aa67c09..1d5cec5ac 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/WifiDirectManager.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/WifiDirectManager.kt @@ -95,7 +95,7 @@ class WifiDirectManager @Inject constructor( this.filesForTransfer = filesForTransfer isFileSender = filesForTransfer.isNotEmpty() manager = activity.getSystemService(Context.WIFI_P2P_SERVICE) as WifiP2pManager - channel = manager.initialize(activity, Looper.getMainLooper(), null) + channel = manager.initialize(activity.baseContext, Looper.getMainLooper(), null) registerWifiDirectBroadcastReceiver() } From 6817c1813a2dd2d8e1dabf68b20898bc3ffc198d Mon Sep 17 00:00:00 2001 From: gouri-panda Date: Mon, 16 Nov 2020 15:17:49 +0530 Subject: [PATCH 2/2] #2435 replaced activity with context --- .../localFileTransfer/SenderDevice.kt | 6 +-- .../localFileTransfer/WifiDirectManager.kt | 43 +++++++++---------- 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/SenderDevice.kt b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/SenderDevice.kt index 9c013237c..ec30d95b9 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/SenderDevice.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/SenderDevice.kt @@ -17,7 +17,7 @@ */ package org.kiwix.kiwixmobile.localFileTransfer -import android.app.Activity +import android.content.Context import android.util.Log import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay @@ -45,7 +45,7 @@ import java.net.Socket private const val TIME_OUT = 15000 internal class SenderDevice( - private val activity: Activity, + private val context: Context, private val wifiDirectManager: WifiDirectManager, private val fileReceiverDeviceAddress: InetAddress ) { @@ -59,7 +59,7 @@ internal class SenderDevice( .forEachIndexed { fileIndex, fileItem -> try { Socket().use { socket -> - activity.contentResolver.openInputStream(fileItem?.fileUri!!).use { fileInputStream -> + context.contentResolver.openInputStream(fileItem?.fileUri!!).use { fileInputStream -> socket.bind(null) socket.connect( InetSocketAddress(hostAddress, WifiDirectManager.FILE_TRANSFER_PORT), diff --git a/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/WifiDirectManager.kt b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/WifiDirectManager.kt index 1d5cec5ac..f3ce2017f 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/WifiDirectManager.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/localFileTransfer/WifiDirectManager.kt @@ -17,7 +17,6 @@ */ package org.kiwix.kiwixmobile.localFileTransfer -import android.app.Activity import android.content.BroadcastReceiver import android.content.Context import android.content.IntentFilter @@ -59,7 +58,7 @@ import javax.inject.Inject */ @SuppressWarnings("MissingPermission", "ProtectedMemberInFinalClass") class WifiDirectManager @Inject constructor( - private val activity: Activity, + private val context: Context, private val sharedPreferenceUtil: SharedPreferenceUtil, private val alertDialogShower: AlertDialogShower ) : ChannelListener, PeerListListener, ConnectionInfoListener, P2pEventListener { @@ -94,8 +93,8 @@ class WifiDirectManager @Inject constructor( fun startWifiDirectManager(filesForTransfer: List) { this.filesForTransfer = filesForTransfer isFileSender = filesForTransfer.isNotEmpty() - manager = activity.getSystemService(Context.WIFI_P2P_SERVICE) as WifiP2pManager - channel = manager.initialize(activity.baseContext, Looper.getMainLooper(), null) + manager = context.getSystemService(Context.WIFI_P2P_SERVICE) as WifiP2pManager + channel = manager.initialize(context, Looper.getMainLooper(), null) registerWifiDirectBroadcastReceiver() } @@ -110,20 +109,20 @@ class WifiDirectManager @Inject constructor( addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION) addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION) } - activity.registerReceiver(receiver, intentFilter) + context.registerReceiver(receiver, intentFilter) } - private fun unregisterWifiDirectBroadcastReceiver() = activity.unregisterReceiver(receiver) + private fun unregisterWifiDirectBroadcastReceiver() = context.unregisterReceiver(receiver) fun discoverPeerDevices() { manager.discoverPeers(channel, object : ActionListener { override fun onSuccess() { - activity.toast(R.string.discovery_initiated, Toast.LENGTH_SHORT) + context.toast(R.string.discovery_initiated, Toast.LENGTH_SHORT) } override fun onFailure(reason: Int) { - Log.d(TAG, "${activity.getString(R.string.discovery_failed)}: ${getErrorMessage(reason)}") - activity.toast(R.string.discovery_failed, Toast.LENGTH_SHORT) + Log.d(TAG, "${context.getString(R.string.discovery_failed)}: ${getErrorMessage(reason)}") + context.toast(R.string.discovery_failed, Toast.LENGTH_SHORT) } }) } @@ -132,7 +131,7 @@ class WifiDirectManager @Inject constructor( override fun onWifiP2pStateChanged(isEnabled: Boolean) { isWifiP2pEnabled = isEnabled if (!isWifiP2pEnabled) { - activity.toast(R.string.discovery_needs_wifi, Toast.LENGTH_SHORT) + context.toast(R.string.discovery_needs_wifi, Toast.LENGTH_SHORT) callbacks?.onConnectionToPeersLost() } Log.d(TAG, "WiFi P2P state changed - $isWifiP2pEnabled") @@ -167,9 +166,9 @@ class WifiDirectManager @Inject constructor( Log.d(TAG, "Channel lost, trying again") callbacks?.onConnectionToPeersLost() shouldRetry = false - manager.initialize(activity, Looper.getMainLooper(), this) + manager.initialize(context, Looper.getMainLooper(), this) } else { - activity.toast(R.string.severe_loss_error, Toast.LENGTH_LONG) + context.toast(R.string.severe_loss_error, Toast.LENGTH_LONG) } } @@ -191,7 +190,7 @@ class WifiDirectManager @Inject constructor( FileTransferConfirmation(senderSelectedPeerDevice.deviceName), { hasSenderStartedConnection = true connect(senderSelectedPeerDevice) - activity.toast(R.string.performing_handshake, Toast.LENGTH_LONG) + context.toast(R.string.performing_handshake, Toast.LENGTH_LONG) }) } } @@ -208,8 +207,8 @@ class WifiDirectManager @Inject constructor( override fun onFailure(reason: Int) { val errorMessage = getErrorMessage(reason) - Log.d(TAG, activity.getString(R.string.connection_failed) + ": " + errorMessage) - activity.toast(R.string.connection_failed, Toast.LENGTH_LONG) + Log.d(TAG, context.getString(R.string.connection_failed) + ": " + errorMessage) + context.toast(R.string.connection_failed, Toast.LENGTH_LONG) } }) } @@ -232,7 +231,7 @@ class WifiDirectManager @Inject constructor( Log.d(TAG, "InetAddress is null") } onFileTransferAsyncTaskComplete(false) - activity.toast(R.string.connection_refused) + context.toast(R.string.connection_refused) } } } @@ -254,8 +253,8 @@ class WifiDirectManager @Inject constructor( Log.d(LocalFileTransferFragment.TAG, "Starting file transfer") val fileReceiverDeviceAddress = if (groupInfo.isGroupOwner) inetAddress else groupInfo.groupOwnerAddress - activity.toast(R.string.preparing_files, Toast.LENGTH_LONG) - val senderDevice = SenderDevice(activity, this, fileReceiverDeviceAddress) + context.toast(R.string.preparing_files, Toast.LENGTH_LONG) + val senderDevice = SenderDevice(context, this, fileReceiverDeviceAddress) val isFileSendSuccessfully = senderDevice.send(filesForTransfer) onFileTransferAsyncTaskComplete(isFileSendSuccessfully) if (BuildConfig.DEBUG) { @@ -277,8 +276,8 @@ class WifiDirectManager @Inject constructor( filesForTransfer[itemIndex].fileStatus = status callbacks?.onFileStatusChanged(itemIndex) if (status == FileStatus.ERROR) { - activity.toast( - activity.getString( + context.toast( + context.getString( R.string.error_transferring, filesForTransfer[itemIndex].fileName ) ) @@ -325,9 +324,9 @@ class WifiDirectManager @Inject constructor( private fun onFileTransferAsyncTaskComplete(wereAllFilesTransferred: Boolean) { if (wereAllFilesTransferred) { - activity.toast(R.string.file_transfer_complete, Toast.LENGTH_LONG) + context.toast(R.string.file_transfer_complete, Toast.LENGTH_LONG) } else { - activity.toast(R.string.error_during_transfer, Toast.LENGTH_LONG) + context.toast(R.string.error_during_transfer, Toast.LENGTH_LONG) } callbacks?.onFileTransferComplete() }