@@ -10,20 +10,26 @@ import android.content.pm.PackageManager
1010import android.os.Build
1111import android.os.Bundle
1212import android.os.Environment
13+ import android.os.Handler
1314import android.os.IBinder
15+ import android.os.Looper
1416import android.provider.Settings
17+ import android.util.Log
1518import android.view.View
1619import androidx.activity.result.ActivityResult
1720import androidx.activity.result.ActivityResultCallback
1821import androidx.activity.result.ActivityResultLauncher
1922import androidx.activity.result.contract.ActivityResultContracts
23+ import androidx.activity.viewModels
2024import androidx.appcompat.app.AppCompatActivity
2125import androidx.core.app.ActivityCompat
2226import androidx.core.content.ContextCompat
2327import androidx.core.net.toUri
2428import androidx.core.view.WindowCompat
2529import androidx.fragment.app.Fragment
30+ import androidx.lifecycle.lifecycleScope
2631import androidx.viewpager2.widget.ViewPager2
32+ import com.drake.engine.utils.ClipboardUtils
2733import com.drake.tooltip.toast
2834import com.google.android.material.bottomnavigation.BottomNavigationView
2935import com.google.android.material.dialog.MaterialAlertDialogBuilder
@@ -34,11 +40,14 @@ import com.lanzou.cloud.databinding.ActivityMainBinding
3440import com.lanzou.cloud.network.Repository
3541import com.lanzou.cloud.service.DownloadService
3642import com.lanzou.cloud.service.UploadService
43+ import com.lanzou.cloud.ui.activity.ResolveFileActivity
3744import com.lanzou.cloud.ui.cloud.file.FileFragment
3845import com.lanzou.cloud.ui.cloud.selector.FileSelectorActivity
3946import com.lanzou.cloud.ui.cloud.selector.PhoneFileActivity
47+ import com.lanzou.cloud.ui.dialog.FileResolveViewModel
4048import com.lanzou.cloud.utils.SpJavaUtils
4149import com.lanzou.cloud.utils.UpdateUtils
50+ import kotlinx.coroutines.launch
4251
4352/* *
4453 * SplitLanzou
@@ -49,12 +58,29 @@ import com.lanzou.cloud.utils.UpdateUtils
4958 */
5059class MainActivity : AppCompatActivity (), ServiceConnection {
5160
61+ companion object {
62+
63+ private const val TAG = " MainActivity"
64+
65+ }
66+
5267 private lateinit var binding: ActivityMainBinding
5368
5469 private var uploadService: UploadService ? = null
5570
5671 private var downloadService: DownloadService ? = null
5772
73+ private val fileResolveViewModel by viewModels<FileResolveViewModel >()
74+
75+ private val handler = Handler (Looper .getMainLooper())
76+
77+ private val clipboardRunnable = Runnable {
78+ // 获取剪切板中的文件
79+ val text = ClipboardUtils .getText()
80+ Log .i(TAG , " 剪切板数据: $text " )
81+ fileResolveViewModel.setClipData(text)
82+ }
83+
5884 @SuppressLint(" NonConstantResourceId" )
5985 override fun onCreate (savedInstanceState : Bundle ? ) {
6086 super .onCreate(savedInstanceState)
@@ -123,6 +149,16 @@ class MainActivity : AppCompatActivity(), ServiceConnection {
123149 if (SpJavaUtils .getBoolean(SPConfig .CHECK_UPDATE , true )) {
124150 UpdateUtils .checkUpdate(this )
125151 }
152+
153+ lifecycleScope.launch {
154+ fileResolveViewModel.fileShareUrl.collect { url ->
155+ if (url.isBlank()) {
156+ return @collect
157+ }
158+ toast(" 发现文件分享链接: $url " )
159+ ResolveFileActivity .actionStart(url)
160+ }
161+ }
126162 }
127163
128164 private val fileFragment: FileFragment
@@ -177,6 +213,16 @@ class MainActivity : AppCompatActivity(), ServiceConnection {
177213 .show()
178214 }
179215
216+ override fun onResume () {
217+ super .onResume()
218+ handler.postDelayed(clipboardRunnable, 500 )
219+ }
220+
221+ override fun onStop () {
222+ super .onStop()
223+ handler.removeCallbacks(clipboardRunnable)
224+ }
225+
180226 override fun onServiceConnected (name : ComponentName ? , service : IBinder ? ) {
181227 if (service is UploadService .UploadBinder ) {
182228 uploadService = service.service
0 commit comments