Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
F
File Recovery RecycleBin
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanglei
File Recovery RecycleBin
Commits
1b7a9798
Commit
1b7a9798
authored
Jul 22, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
....
parent
5e427195
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
1080 additions
and
1081 deletions
+1080
-1081
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+30
-37
MyApplication.kt
...ain/java/com/base/filerecoveryrecyclebin/MyApplication.kt
+0
-2
ResultActivity.kt
...om/base/filerecoveryrecyclebin/activity/ResultActivity.kt
+0
-12
SplashActivity.kt
...om/base/filerecoveryrecyclebin/activity/SplashActivity.kt
+4
-12
PrivacyImportActivity.kt
...recyclebin/activity/privacyspace/PrivacyImportActivity.kt
+164
-164
PrivacyManageActivity.kt
...recyclebin/activity/privacyspace/PrivacyManageActivity.kt
+131
-131
PrivacyPinOneActivity.kt
...recyclebin/activity/privacyspace/PrivacyPinOneActivity.kt
+200
-200
PrivacyPinTwoActivity.kt
...recyclebin/activity/privacyspace/PrivacyPinTwoActivity.kt
+200
-200
PrivacySpaceActivity.kt
...yrecyclebin/activity/privacyspace/PrivacySpaceActivity.kt
+110
-110
ConstObject.kt
.../java/com/base/filerecoveryrecyclebin/bean/ConstObject.kt
+2
-1
NotificationUtil.kt
...a/com/base/filerecoveryrecyclebin/fcm/NotificationUtil.kt
+7
-6
PrivacyFileImportFragment.kt
...erecoveryrecyclebin/fragment/PrivacyFileImportFragment.kt
+75
-76
PrivacyPageFragment.kt
...se/filerecoveryrecyclebin/fragment/PrivacyPageFragment.kt
+130
-130
WhatsappCleanerStringManager.java
...ecoveryrecyclebin/utils/WhatsappCleanerStringManager.java
+27
-0
No files found.
app/src/main/AndroidManifest.xml
View file @
1b7a9798
...
@@ -114,12 +114,12 @@
...
@@ -114,12 +114,12 @@
android:launchMode=
"singleTop"
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<activity
<!-- <activity-->
android:name=
".activity.privacyspace.PrivacyManageActivity"
<!-- android:name=".activity.privacyspace.PrivacyManageActivity"-->
android:exported=
"false"
<!-- android:exported="false"-->
android:launchMode=
"singleTop"
<!-- android:launchMode="singleTop"-->
android:screenOrientation=
"portrait"
<!-- android:screenOrientation="portrait"-->
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/
>
<!-- tools:ignore="DiscouragedApi,LockedOrientationActivity" />--
>
<activity
<activity
android:name=
".activity.repeat.RepeatActivity"
android:name=
".activity.repeat.RepeatActivity"
android:exported=
"false"
android:exported=
"false"
...
@@ -150,30 +150,30 @@
...
@@ -150,30 +150,30 @@
android:launchMode=
"singleTop"
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<activity
<!-- <activity-->
android:name=
".activity.privacyspace.PrivacyPinTwoActivity"
<!-- android:name=".activity.privacyspace.PrivacyPinTwoActivity"-->
android:exported=
"false"
<!-- android:exported="false"-->
android:launchMode=
"singleTop"
<!-- android:launchMode="singleTop"-->
android:screenOrientation=
"portrait"
<!-- android:screenOrientation="portrait"-->
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/
>
<!-- tools:ignore="DiscouragedApi,LockedOrientationActivity" />--
>
<activity
<!-- <activity-->
android:name=
".activity.privacyspace.PrivacyPinOneActivity"
<!-- android:name=".activity.privacyspace.PrivacyPinOneActivity"-->
android:exported=
"false"
<!-- android:exported="false"-->
android:launchMode=
"singleTop"
<!-- android:launchMode="singleTop"-->
android:screenOrientation=
"portrait"
<!-- android:screenOrientation="portrait"-->
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/
>
<!-- tools:ignore="DiscouragedApi,LockedOrientationActivity" />--
>
<activity
<!-- <activity-->
android:name=
".activity.privacyspace.PrivacyImportActivity"
<!-- android:name=".activity.privacyspace.PrivacyImportActivity"-->
android:exported=
"false"
<!-- android:exported="false"-->
android:launchMode=
"singleTop"
<!-- android:launchMode="singleTop"-->
android:screenOrientation=
"portrait"
<!-- android:screenOrientation="portrait"-->
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/
>
<!-- tools:ignore="DiscouragedApi,LockedOrientationActivity" />--
>
<activity
<!-- <activity-->
android:name=
".activity.privacyspace.PrivacySpaceActivity"
<!-- android:name=".activity.privacyspace.PrivacySpaceActivity"-->
android:exported=
"false"
<!-- android:exported="false"-->
android:launchMode=
"singleTop"
<!-- android:launchMode="singleTop"-->
android:screenOrientation=
"portrait"
<!-- android:screenOrientation="portrait"-->
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/
>
<!-- tools:ignore="DiscouragedApi,LockedOrientationActivity" />--
>
<activity
<activity
android:name=
".activity.recovery.FileRecoveredActivity"
android:name=
".activity.recovery.FileRecoveredActivity"
android:exported=
"false"
android:exported=
"false"
...
@@ -192,13 +192,6 @@
...
@@ -192,13 +192,6 @@
android:launchMode=
"singleTop"
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<activity
android:name=
".activity.recovery.FileScanActivity"
android:exported=
"false"
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<meta-data
<meta-data
android:name=
"com.google.android.gms.ads.flag.OPTIMIZE_INITIALIZATION"
android:name=
"com.google.android.gms.ads.flag.OPTIMIZE_INITIALIZATION"
android:value=
"true"
/>
android:value=
"true"
/>
...
...
app/src/main/java/com/base/filerecoveryrecyclebin/MyApplication.kt
View file @
1b7a9798
...
@@ -8,7 +8,6 @@ import android.text.TextUtils
...
@@ -8,7 +8,6 @@ import android.text.TextUtils
import
com.base.filerecoveryrecyclebin.activity.SplashActivity
import
com.base.filerecoveryrecyclebin.activity.SplashActivity
import
com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import
com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import
com.base.filerecoveryrecyclebin.ads.admob.AdmobOpenUtils
import
com.base.filerecoveryrecyclebin.ads.admob.AdmobOpenUtils
import
com.base.filerecoveryrecyclebin.ads.max.AdMaxInit.initAdMax
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ifAgreePrivacy
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ifAgreePrivacy
import
com.base.filerecoveryrecyclebin.fcm.FCMManager
import
com.base.filerecoveryrecyclebin.fcm.FCMManager
import
com.base.filerecoveryrecyclebin.fcm.RecoveryTimerManager
import
com.base.filerecoveryrecyclebin.fcm.RecoveryTimerManager
...
@@ -20,7 +19,6 @@ import com.base.filerecoveryrecyclebin.utils.AppPreferences
...
@@ -20,7 +19,6 @@ import com.base.filerecoveryrecyclebin.utils.AppPreferences
import
com.base.filerecoveryrecyclebin.utils.InstallHelps
import
com.base.filerecoveryrecyclebin.utils.InstallHelps
import
com.base.filerecoveryrecyclebin.utils.LogEx
import
com.base.filerecoveryrecyclebin.utils.LogEx
import
com.base.filerecoveryrecyclebin.utils.NewComUtils
import
com.base.filerecoveryrecyclebin.utils.NewComUtils
import
com.google.android.gms.ads.MobileAds
import
com.google.android.gms.ads.identifier.AdvertisingIdClient
import
com.google.android.gms.ads.identifier.AdvertisingIdClient
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.MainScope
import
kotlinx.coroutines.MainScope
...
...
app/src/main/java/com/base/filerecoveryrecyclebin/activity/ResultActivity.kt
View file @
1b7a9798
...
@@ -6,8 +6,6 @@ import android.graphics.Color
...
@@ -6,8 +6,6 @@ import android.graphics.Color
import
androidx.activity.OnBackPressedCallback
import
androidx.activity.OnBackPressedCallback
import
androidx.core.view.updatePadding
import
androidx.core.view.updatePadding
import
com.base.filerecoveryrecyclebin.activity.junkclean.ScanJunkActivity
import
com.base.filerecoveryrecyclebin.activity.junkclean.ScanJunkActivity
import
com.base.filerecoveryrecyclebin.activity.privacyspace.PrivacyPinOneActivity
import
com.base.filerecoveryrecyclebin.activity.privacyspace.PrivacySpaceActivity
import
com.base.filerecoveryrecyclebin.activity.recovery.FileScanResultActivity
import
com.base.filerecoveryrecyclebin.activity.recovery.FileScanResultActivity
import
com.base.filerecoveryrecyclebin.activity.repeat.RepeatAnimationActivity
import
com.base.filerecoveryrecyclebin.activity.repeat.RepeatAnimationActivity
import
com.base.filerecoveryrecyclebin.activity.screenshot.ScreenShotAnimationActivity
import
com.base.filerecoveryrecyclebin.activity.screenshot.ScreenShotAnimationActivity
...
@@ -75,16 +73,6 @@ class ResultActivity : BaseActivity<ActivityLayoutResultBinding>() {
...
@@ -75,16 +73,6 @@ class ResultActivity : BaseActivity<ActivityLayoutResultBinding>() {
putExtra
(
"ScanType"
,
SCAN_DOCUMENTS
)
putExtra
(
"ScanType"
,
SCAN_DOCUMENTS
)
})
})
}
}
PRIVACY_SPACE
->
{
if
(
privacyPinPassword
.
isNotEmpty
())
{
startActivity
(
Intent
(
this
,
PrivacyPinOneActivity
::
class
.
java
))
}
else
{
startActivity
(
Intent
(
this
,
PrivacySpaceActivity
::
class
.
java
).
apply
{
})
}
}
}
}
finish
()
finish
()
}
}
...
...
app/src/main/java/com/base/filerecoveryrecyclebin/activity/SplashActivity.kt
View file @
1b7a9798
...
@@ -12,23 +12,21 @@ import androidx.lifecycle.lifecycleScope
...
@@ -12,23 +12,21 @@ import androidx.lifecycle.lifecycleScope
import
com.base.filerecoveryrecyclebin.MyApplication
import
com.base.filerecoveryrecyclebin.MyApplication
import
com.base.filerecoveryrecyclebin.activity.guide.GuideActivity
import
com.base.filerecoveryrecyclebin.activity.guide.GuideActivity
import
com.base.filerecoveryrecyclebin.activity.junkclean.ScanJunkActivity
import
com.base.filerecoveryrecyclebin.activity.junkclean.ScanJunkActivity
import
com.base.filerecoveryrecyclebin.activity.privacyspace.PrivacyPinOneActivity
import
com.base.filerecoveryrecyclebin.activity.privacyspace.PrivacySpaceActivity
import
com.base.filerecoveryrecyclebin.activity.recovery.FileScanResultActivity
import
com.base.filerecoveryrecyclebin.activity.recovery.FileScanResultActivity
import
com.base.filerecoveryrecyclebin.activity.repeat.RepeatActivity
import
com.base.filerecoveryrecyclebin.activity.repeat.RepeatActivity
import
com.base.filerecoveryrecyclebin.activity.screenshot.ScreenShotActivity
import
com.base.filerecoveryrecyclebin.activity.screenshot.ScreenShotActivity
import
com.base.filerecoveryrecyclebin.activity.whatsapp.WhatsAppCleanerAnimationActivity
import
com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import
com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import
com.base.filerecoveryrecyclebin.bean.ConstObject
import
com.base.filerecoveryrecyclebin.bean.ConstObject
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_JUNK_CLEAN_PUSH
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_JUNK_CLEAN_PUSH
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_PRIVACY_SPACE
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_RECOVERY_DOCUMENTS
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_RECOVERY_DOCUMENTS
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_RECOVERY_PHOTOS
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_RECOVERY_PHOTOS
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_RECOVERY_VIDEOS
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_RECOVERY_VIDEOS
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_SCREENSHOT_CLEAN
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_SCREENSHOT_CLEAN
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_SIMILAR_IMAGE
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_SIMILAR_IMAGE
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_WHATSAPP
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ifAgreePrivacy
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ifAgreePrivacy
import
com.base.filerecoveryrecyclebin.bean.ConstObject.isGuide
import
com.base.filerecoveryrecyclebin.bean.ConstObject.isGuide
import
com.base.filerecoveryrecyclebin.bean.ConstObject.privacyPinPassword
import
com.base.filerecoveryrecyclebin.databinding.ActivitySplashBinding
import
com.base.filerecoveryrecyclebin.databinding.ActivitySplashBinding
import
com.base.filerecoveryrecyclebin.fcm.CloseNotificationReceiver
import
com.base.filerecoveryrecyclebin.fcm.CloseNotificationReceiver
import
com.base.filerecoveryrecyclebin.fcm.CloseNotificationReceiver.Companion.NotificationId
import
com.base.filerecoveryrecyclebin.fcm.CloseNotificationReceiver.Companion.NotificationId
...
@@ -145,14 +143,8 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
...
@@ -145,14 +143,8 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
})
})
}
}
ID_PRIVACY_SPACE
->
{
ID_WHATSAPP
->
{
if
(
privacyPinPassword
.
isNotEmpty
())
{
startActivity
(
Intent
(
this
,
WhatsAppCleanerAnimationActivity
::
class
.
java
))
startActivity
(
Intent
(
this
,
PrivacyPinOneActivity
::
class
.
java
))
}
else
{
startActivity
(
Intent
(
this
,
PrivacySpaceActivity
::
class
.
java
).
apply
{
})
}
}
}
else
->
{
else
->
{
...
...
app/src/main/java/com/base/filerecoveryrecyclebin/activity/privacyspace/PrivacyImportActivity.kt
View file @
1b7a9798
This diff is collapsed.
Click to expand it.
app/src/main/java/com/base/filerecoveryrecyclebin/activity/privacyspace/PrivacyManageActivity.kt
View file @
1b7a9798
package
com.base.filerecoveryrecyclebin.activity.privacyspace
//package com.base.filerecoveryrecyclebin.activity.privacyspace
//
import
android.annotation.SuppressLint
//import android.annotation.SuppressLint
import
android.graphics.Color
//import android.graphics.Color
import
android.os.Environment
//import android.os.Environment
import
android.view.View
//import android.view.View
import
android.widget.Toast
//import android.widget.Toast
import
androidx.core.view.updatePadding
//import androidx.core.view.updatePadding
import
androidx.lifecycle.lifecycleScope
//import androidx.lifecycle.lifecycleScope
import
com.base.filerecoveryrecyclebin.adapter.MediaSubAdapter
//import com.base.filerecoveryrecyclebin.adapter.MediaSubAdapter
import
com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
//import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import
com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils
//import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils
import
com.base.filerecoveryrecyclebin.bean.MediaBean
//import com.base.filerecoveryrecyclebin.bean.MediaBean
import
com.base.filerecoveryrecyclebin.databinding.ActivityPrivacyManageBinding
//import com.base.filerecoveryrecyclebin.databinding.ActivityPrivacyManageBinding
import
com.base.filerecoveryrecyclebin.help.BaseActivity
//import com.base.filerecoveryrecyclebin.help.BaseActivity
import
com.base.filerecoveryrecyclebin.help.FileHelp.loadFileByFilter
//import com.base.filerecoveryrecyclebin.help.FileHelp.loadFileByFilter
import
com.base.filerecoveryrecyclebin.help.MediaStoreHelp.updateMediaStore
//import com.base.filerecoveryrecyclebin.help.MediaStoreHelp.updateMediaStore
import
com.base.filerecoveryrecyclebin.utils.BarUtils
//import com.base.filerecoveryrecyclebin.utils.BarUtils
import
com.base.filerecoveryrecyclebin.utils.LogEx
//import com.base.filerecoveryrecyclebin.utils.LogEx
import
com.base.filerecoveryrecyclebin.view.DialogViews.showDeletePermanentlyDialog
//import com.base.filerecoveryrecyclebin.view.DialogViews.showDeletePermanentlyDialog
import
kotlinx.coroutines.Dispatchers
//import kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.launch
//import kotlinx.coroutines.launch
import
java.io.File
//import java.io.File
//
class
PrivacyManageActivity
:
BaseActivity
<
ActivityPrivacyManageBinding
>()
{
//class PrivacyManageActivity : BaseActivity<ActivityPrivacyManageBinding>() {
//
private
val
TAG
=
"PrivacyManageActivity"
// private val TAG = "PrivacyManageActivity"
private
var
mediaType
:
String
=
""
// private var mediaType: String = ""
private
lateinit
var
mediaSubAdapter
:
MediaSubAdapter
// private lateinit var mediaSubAdapter: MediaSubAdapter
//
override
val
binding
:
ActivityPrivacyManageBinding
by
lazy
{
// override val binding: ActivityPrivacyManageBinding by lazy {
ActivityPrivacyManageBinding
.
inflate
(
layoutInflater
)
// ActivityPrivacyManageBinding.inflate(layoutInflater)
}
// }
//
//
override
fun
initView
()
{
// override fun initView() {
BarUtils
.
setStatusBarLightMode
(
this
,
true
)
// BarUtils.setStatusBarLightMode(this, true)
BarUtils
.
setStatusBarColor
(
this
,
Color
.
TRANSPARENT
)
// BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
binding
.
root
.
updatePadding
(
top
=
BarUtils
.
getStatusBarHeight
())
// binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
mediaType
=
intent
?.
extras
?.
getString
(
"mediaType"
)
?:
""
// mediaType = intent?.extras?.getString("mediaType") ?: ""
//
//
mediaSubAdapter
=
MediaSubAdapter
()
// mediaSubAdapter = MediaSubAdapter()
binding
.
rv
.
adapter
=
mediaSubAdapter
// binding.rv.adapter = mediaSubAdapter
initData
()
// initData()
}
// }
//
@SuppressLint
(
"SetTextI18n"
)
// @SuppressLint("SetTextI18n")
override
fun
initListener
()
{
// override fun initListener() {
//
binding
.
llDownload
.
setOnClickListener
{
// binding.llDownload.setOnClickListener {
downloadCopy
()
// downloadCopy()
}
// }
binding
.
llDelete
.
setOnClickListener
{
// binding.llDelete.setOnClickListener {
deleteFilesDirMedia
()
// deleteFilesDirMedia()
}
// }
binding
.
tvSelectAll
.
setOnClickListener
{
// binding.tvSelectAll.setOnClickListener {
binding
.
tvSelectAll
.
isSelected
=
!
binding
.
tvSelectAll
.
isSelected
// binding.tvSelectAll.isSelected = !binding.tvSelectAll.isSelected
mediaSubAdapter
.
toggleSelect
(
binding
.
tvSelectAll
.
isSelected
)
// mediaSubAdapter.toggleSelect(binding.tvSelectAll.isSelected)
if
(
binding
.
tvSelectAll
.
isSelected
)
{
// if (binding.tvSelectAll.isSelected) {
binding
.
tvSelectAll
.
text
=
"Unselect All"
// binding.tvSelectAll.text = "Unselect All"
}
else
{
// } else {
binding
.
tvSelectAll
.
text
=
"Select All"
// binding.tvSelectAll.text = "Select All"
}
// }
}
// }
binding
.
flGuanbi
.
setOnClickListener
{
// binding.flGuanbi.setOnClickListener {
finish
()
// finish()
}
// }
}
// }
//
private
fun
deleteFilesDirMedia
()
{
// private fun deleteFilesDirMedia() {
showDeletePermanentlyDialog
{
// showDeletePermanentlyDialog {
AdmobMaxHelper
.
admobMaxShowInterstitialAd
(
this
)
{
// AdmobMaxHelper.admobMaxShowInterstitialAd(this) {
lifecycleScope
.
launch
(
Dispatchers
.
IO
)
{
// lifecycleScope.launch(Dispatchers.IO) {
val
list
=
mediaSubAdapter
.
getSelectData
()
// val list = mediaSubAdapter.getSelectData()
list
.
forEach
{
// list.forEach {
runCatching
{
File
(
it
.
path
).
delete
()
}
// runCatching { File(it.path).delete() }
}
// }
launch
(
Dispatchers
.
Main
)
{
// launch(Dispatchers.Main) {
Toast
.
makeText
(
this
@PrivacyManageActivity
,
"success"
,
Toast
.
LENGTH_SHORT
).
show
()
// Toast.makeText(this@PrivacyManageActivity, "success", Toast.LENGTH_SHORT).show()
mediaSubAdapter
.
removeData
(
list
)
// mediaSubAdapter.removeData(list)
}
// }
}
// }
}
// }
}
// }
}
// }
//
private
fun
downloadCopy
()
=
lifecycleScope
.
launch
(
Dispatchers
.
IO
)
{
// private fun downloadCopy() = lifecycleScope.launch(Dispatchers.IO) {
mediaSubAdapter
.
getSelectData
().
forEach
{
bean
->
// mediaSubAdapter.getSelectData().forEach { bean ->
runCatching
{
// runCatching {
val
file
=
File
(
bean
.
path
)
// val file = File(bean.path)
val
dir
=
Environment
.
getExternalStoragePublicDirectory
(
Environment
.
DIRECTORY_DOWNLOADS
)
// val dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
file
.
copyTo
(
File
(
dir
,
file
.
name
))
// file.copyTo(File(dir, file.name))
}
// }
}
// }
this
@PrivacyManageActivity
.
updateMediaStore
()
// this@PrivacyManageActivity.updateMediaStore()
launch
(
Dispatchers
.
Main
)
{
// launch(Dispatchers.Main) {
Toast
.
makeText
(
this
@PrivacyManageActivity
,
"success"
,
Toast
.
LENGTH_SHORT
).
show
()
// Toast.makeText(this@PrivacyManageActivity, "success", Toast.LENGTH_SHORT).show()
mediaSubAdapter
.
toggleSelect
(
false
)
// mediaSubAdapter.toggleSelect(false)
}
// }
}
// }
//
private
fun
initData
()
{
// private fun initData() {
val
dir
=
getFilesMediaDir
()
// val dir = getFilesMediaDir()
if
(!
dir
.
exists
())
{
// if (!dir.exists()) {
dir
.
mkdirs
()
// dir.mkdirs()
}
// }
val
list
=
arrayListOf
<
MediaBean
>()
// val list = arrayListOf<MediaBean>()
//
lifecycleScope
.
loadFileByFilter
(
folder
=
dir
,
filter
=
{
true
},
onDo
=
{
// lifecycleScope.loadFileByFilter(folder = dir, filter = { true }, onDo = {
LogEx
.
logDebug
(
TAG
,
"$it"
)
// LogEx.logDebug(TAG, "$it")
list
.
add
(
MediaBean
(
it
.
absolutePath
))
// list.add(MediaBean(it.absolutePath))
},
onFinish
=
{
// }, onFinish = {
lifecycleScope
.
launch
(
Dispatchers
.
Main
)
{
// lifecycleScope.launch(Dispatchers.Main) {
if
(
list
.
isNotEmpty
())
{
// if (list.isNotEmpty()) {
binding
.
rv
.
visibility
=
View
.
VISIBLE
// binding.rv.visibility = View.VISIBLE
mediaSubAdapter
.
setData
(
list
)
// mediaSubAdapter.setData(list)
}
// }
}
// }
})
// })
}
// }
//
private
fun
getFilesMediaDir
():
File
{
// private fun getFilesMediaDir(): File {
return
if
(
mediaType
==
"Photos"
)
{
// return if (mediaType == "Photos") {
File
(
filesDir
,
"photos"
)
// File(filesDir, "photos")
}
else
{
// } else {
File
(
filesDir
,
"videos"
)
// File(filesDir, "videos")
}
// }
}
// }
//
}
//}
\ No newline at end of file
\ No newline at end of file
app/src/main/java/com/base/filerecoveryrecyclebin/activity/privacyspace/PrivacyPinOneActivity.kt
View file @
1b7a9798
This diff is collapsed.
Click to expand it.
app/src/main/java/com/base/filerecoveryrecyclebin/activity/privacyspace/PrivacyPinTwoActivity.kt
View file @
1b7a9798
This diff is collapsed.
Click to expand it.
app/src/main/java/com/base/filerecoveryrecyclebin/activity/privacyspace/PrivacySpaceActivity.kt
View file @
1b7a9798
package
com.base.filerecoveryrecyclebin.activity.privacyspace
//package com.base.filerecoveryrecyclebin.activity.privacyspace
//
import
android.annotation.SuppressLint
//import android.annotation.SuppressLint
import
android.content.Intent
//import android.content.Intent
import
android.graphics.Color
//import android.graphics.Color
import
android.view.View
//import android.view.View
import
androidx.activity.addCallback
//import androidx.activity.addCallback
import
androidx.fragment.app.Fragment
//import androidx.fragment.app.Fragment
import
androidx.viewpager2.adapter.FragmentStateAdapter
//import androidx.viewpager2.adapter.FragmentStateAdapter
import
androidx.viewpager2.widget.ViewPager2
//import androidx.viewpager2.widget.ViewPager2
import
com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
//import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import
com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils
//import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils
import
com.base.filerecoveryrecyclebin.bean.ConstObject.privacyPinPassword
//import com.base.filerecoveryrecyclebin.bean.ConstObject.privacyPinPassword
import
com.base.filerecoveryrecyclebin.databinding.ActivityPrivacySpaceBinding
//import com.base.filerecoveryrecyclebin.databinding.ActivityPrivacySpaceBinding
import
com.base.filerecoveryrecyclebin.fragment.PrivacyPageFragment
//import com.base.filerecoveryrecyclebin.fragment.PrivacyPageFragment
import
com.base.filerecoveryrecyclebin.help.BaseActivity
//import com.base.filerecoveryrecyclebin.help.BaseActivity
import
com.base.filerecoveryrecyclebin.utils.BarUtils
//import com.base.filerecoveryrecyclebin.utils.BarUtils
import
com.base.filerecoveryrecyclebin.view.DialogViews.showExitFunctionDialog
//import com.base.filerecoveryrecyclebin.view.DialogViews.showExitFunctionDialog
//
/**
///**
* 隐私空间
// * 隐私空间
*/
// */
class
PrivacySpaceActivity
:
BaseActivity
<
ActivityPrivacySpaceBinding
>()
{
//class PrivacySpaceActivity : BaseActivity<ActivityPrivacySpaceBinding>() {
//
override
val
binding
:
ActivityPrivacySpaceBinding
by
lazy
{
// override val binding: ActivityPrivacySpaceBinding by lazy {
ActivityPrivacySpaceBinding
.
inflate
(
layoutInflater
)
// ActivityPrivacySpaceBinding.inflate(layoutInflater)
}
// }
private
val
photosFragment
:
PrivacyPageFragment
by
lazy
{
// private val photosFragment: PrivacyPageFragment by lazy {
PrivacyPageFragment
(
"Photos"
)
// PrivacyPageFragment("Photos")
}
// }
//
private
val
videosFragment
:
PrivacyPageFragment
by
lazy
{
// private val videosFragment: PrivacyPageFragment by lazy {
PrivacyPageFragment
(
"Videos"
)
// PrivacyPageFragment("Videos")
}
// }
private
val
fragments
by
lazy
{
// private val fragments by lazy {
mutableListOf
(
photosFragment
,
videosFragment
)
// mutableListOf(photosFragment, videosFragment)
}
// }
//
//
@SuppressLint
(
"SetTextI18n"
)
// @SuppressLint("SetTextI18n")
override
fun
initView
()
{
// override fun initView() {
BarUtils
.
setStatusBarLightMode
(
this
,
true
)
// BarUtils.setStatusBarLightMode(this, true)
BarUtils
.
setStatusBarColor
(
this
,
Color
.
TRANSPARENT
)
// BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
//
binding
.
viewpager2
.
run
{
// binding.viewpager2.run {
adapter
=
object
:
FragmentStateAdapter
(
this
@PrivacySpaceActivity
)
{
// adapter = object : FragmentStateAdapter(this@PrivacySpaceActivity) {
override
fun
getItemCount
():
Int
{
// override fun getItemCount(): Int {
return
fragments
.
size
// return fragments.size
}
// }
//
override
fun
createFragment
(
position
:
Int
):
Fragment
{
// override fun createFragment(position: Int): Fragment {
return
fragments
[
position
]
// return fragments[position]
}
// }
}
// }
}
// }
binding
.
viewpager2
.
registerOnPageChangeCallback
(
object
:
// binding.viewpager2.registerOnPageChangeCallback(object :
ViewPager2
.
OnPageChangeCallback
()
{
// ViewPager2.OnPageChangeCallback() {
override
fun
onPageSelected
(
position
:
Int
)
{
// override fun onPageSelected(position: Int) {
if
(
position
==
0
)
{
// if (position == 0) {
binding
.
llPhotos
.
isSelected
=
true
// binding.llPhotos.isSelected = true
binding
.
llVideos
.
isSelected
=
false
// binding.llVideos.isSelected = false
}
else
{
// } else {
binding
.
llVideos
.
isSelected
=
true
// binding.llVideos.isSelected = true
binding
.
llPhotos
.
isSelected
=
false
// binding.llPhotos.isSelected = false
}
// }
}
// }
})
// })
if
(
privacyPinPassword
.
isEmpty
())
{
// if (privacyPinPassword.isEmpty()) {
binding
.
tvUninstallTip
.
setTextColor
(
Color
.
parseColor
(
"#FAB44B"
))
// binding.tvUninstallTip.setTextColor(Color.parseColor("#FAB44B"))
binding
.
tvGoOrSetting
.
text
=
"Setting"
// binding.tvGoOrSetting.text = "Setting"
}
else
{
// } else {
binding
.
tvPinTip
.
visibility
=
View
.
GONE
// binding.tvPinTip.visibility = View.GONE
binding
.
tvGoOrSetting
.
text
=
"Got it"
// binding.tvGoOrSetting.text = "Got it"
}
// }
}
// }
//
override
fun
initListener
()
{
// override fun initListener() {
super
.
initListener
()
// super.initListener()
//
binding
.
tvGoOrSetting
.
setOnClickListener
{
// binding.tvGoOrSetting.setOnClickListener {
if
(
privacyPinPassword
.
isEmpty
())
{
// if (privacyPinPassword.isEmpty()) {
startActivity
(
Intent
(
this
,
PrivacyPinOneActivity
::
class
.
java
))
// startActivity(Intent(this, PrivacyPinOneActivity::class.java))
}
else
{
// } else {
binding
.
llTip
.
visibility
=
View
.
GONE
// binding.llTip.visibility = View.GONE
}
// }
}
// }
binding
.
llPhotos
.
setOnClickListener
{
// binding.llPhotos.setOnClickListener {
binding
.
viewpager2
.
currentItem
=
0
// binding.viewpager2.currentItem = 0
}
// }
binding
.
llVideos
.
setOnClickListener
{
// binding.llVideos.setOnClickListener {
binding
.
viewpager2
.
currentItem
=
1
// binding.viewpager2.currentItem = 1
}
// }
onBackPressedDispatcher
.
addCallback
{
// onBackPressedDispatcher.addCallback {
showExitFunctionDialog
(
true
)
{
// showExitFunctionDialog(true) {
if
(
it
)
{
// if (it) {
AdmobMaxHelper
.
admobMaxShowInterstitialAd
(
this
@PrivacySpaceActivity
)
{
// AdmobMaxHelper.admobMaxShowInterstitialAd(this@PrivacySpaceActivity) {
finishToMain
()
// finishToMain()
}
// }
}
else
{
// } else {
finishToMain
()
// finishToMain()
}
// }
}
// }
}
// }
binding
.
flFanhui
.
setOnClickListener
{
// binding.flFanhui.setOnClickListener {
onBackPressedDispatcher
.
onBackPressed
()
// onBackPressedDispatcher.onBackPressed()
}
// }
//
}
// }
//
}
//}
\ No newline at end of file
\ No newline at end of file
app/src/main/java/com/base/filerecoveryrecyclebin/bean/ConstObject.kt
View file @
1b7a9798
...
@@ -10,7 +10,8 @@ object ConstObject {
...
@@ -10,7 +10,8 @@ object ConstObject {
const
val
ID_RECOVERY_PHOTOS
=
13000
const
val
ID_RECOVERY_PHOTOS
=
13000
const
val
ID_RECOVERY_VIDEOS
=
13001
const
val
ID_RECOVERY_VIDEOS
=
13001
const
val
ID_RECOVERY_DOCUMENTS
=
13002
const
val
ID_RECOVERY_DOCUMENTS
=
13002
const
val
ID_PRIVACY_SPACE
=
13003
// const val ID_PRIVACY_SPACE = 13003
const
val
ID_WHATSAPP
=
12001
//截图清理
const
val
RECOVERY_PHOTOS
=
"Recovery Photos"
const
val
RECOVERY_PHOTOS
=
"Recovery Photos"
const
val
RECOVERY_VIDEOS
=
"Recovery Videos"
const
val
RECOVERY_VIDEOS
=
"Recovery Videos"
...
...
app/src/main/java/com/base/filerecoveryrecyclebin/fcm/NotificationUtil.kt
View file @
1b7a9798
...
@@ -16,12 +16,12 @@ import com.base.filerecoveryrecyclebin.MyApplication
...
@@ -16,12 +16,12 @@ import com.base.filerecoveryrecyclebin.MyApplication
import
com.base.filerecoveryrecyclebin.R
import
com.base.filerecoveryrecyclebin.R
import
com.base.filerecoveryrecyclebin.activity.SplashActivity
import
com.base.filerecoveryrecyclebin.activity.SplashActivity
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_JUNK_CLEAN_PUSH
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_JUNK_CLEAN_PUSH
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_PRIVACY_SPACE
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_RECOVERY_DOCUMENTS
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_RECOVERY_DOCUMENTS
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_RECOVERY_PHOTOS
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_RECOVERY_PHOTOS
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_RECOVERY_VIDEOS
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_RECOVERY_VIDEOS
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_SCREENSHOT_CLEAN
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_SCREENSHOT_CLEAN
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_SIMILAR_IMAGE
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_SIMILAR_IMAGE
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_WHATSAPP
import
com.base.filerecoveryrecyclebin.utils.AppPreferences
import
com.base.filerecoveryrecyclebin.utils.AppPreferences
import
com.base.filerecoveryrecyclebin.utils.CleanJunkStringResourceManager
import
com.base.filerecoveryrecyclebin.utils.CleanJunkStringResourceManager
import
com.base.filerecoveryrecyclebin.utils.DocumentRecoveryStringManager
import
com.base.filerecoveryrecyclebin.utils.DocumentRecoveryStringManager
...
@@ -31,6 +31,7 @@ import com.base.filerecoveryrecyclebin.utils.PhotoRecoveryStringManager
...
@@ -31,6 +31,7 @@ import com.base.filerecoveryrecyclebin.utils.PhotoRecoveryStringManager
import
com.base.filerecoveryrecyclebin.utils.PrivacySpaceStringManager
import
com.base.filerecoveryrecyclebin.utils.PrivacySpaceStringManager
import
com.base.filerecoveryrecyclebin.utils.ScreenshotCleanupStringManager
import
com.base.filerecoveryrecyclebin.utils.ScreenshotCleanupStringManager
import
com.base.filerecoveryrecyclebin.utils.VideoRecoveryStringManager
import
com.base.filerecoveryrecyclebin.utils.VideoRecoveryStringManager
import
com.base.filerecoveryrecyclebin.utils.WhatsappCleanerStringManager
import
java.util.Random
import
java.util.Random
/**
/**
...
@@ -86,10 +87,10 @@ object NotificationUtil {
...
@@ -86,10 +87,10 @@ object NotificationUtil {
btn
=
"Restore Document"
btn
=
"Restore Document"
}
}
ID_
PRIVACY_SPACE
->
{
ID_
WHATSAPP
->
{
icon
=
R
.
mipmap
.
space
icon
=
R
.
mipmap
.
h_whatsapp
desc
=
PrivacySpaceStringManager
.
getNextPrivacySpace
Copy
()
desc
=
WhatsappCleanerStringManager
.
getNextCleaner
Copy
()
btn
=
"
Hide Content
"
btn
=
"
WhatsApp Cleaner
"
}
}
}
}
bigRemoteViews
.
setImageViewResource
(
R
.
id
.
iv_icon
,
icon
)
bigRemoteViews
.
setImageViewResource
(
R
.
id
.
iv_icon
,
icon
)
...
@@ -271,6 +272,6 @@ object NotificationUtil {
...
@@ -271,6 +272,6 @@ object NotificationUtil {
ID_RECOVERY_PHOTOS
,
ID_RECOVERY_PHOTOS
,
ID_RECOVERY_VIDEOS
,
ID_RECOVERY_VIDEOS
,
ID_RECOVERY_DOCUMENTS
,
ID_RECOVERY_DOCUMENTS
,
ID_
PRIVACY_SPACE
,
ID_
WHATSAPP
)
)
}
}
\ No newline at end of file
app/src/main/java/com/base/filerecoveryrecyclebin/fragment/PrivacyFileImportFragment.kt
View file @
1b7a9798
package
com.base.filerecoveryrecyclebin.fragment
//package com.base.filerecoveryrecyclebin.fragment
//
import
android.annotation.SuppressLint
//import android.annotation.SuppressLint
import
androidx.lifecycle.lifecycleScope
//import androidx.lifecycle.lifecycleScope
import
com.base.filerecoveryrecyclebin.activity.privacyspace.PrivacyImportActivity
//import com.base.filerecoveryrecyclebin.adapter.MediaAdapter
import
com.base.filerecoveryrecyclebin.adapter.MediaAdapter
//import com.base.filerecoveryrecyclebin.bean.MediaBean
import
com.base.filerecoveryrecyclebin.bean.MediaBean
//import com.base.filerecoveryrecyclebin.bean.MediaTimeBean
import
com.base.filerecoveryrecyclebin.bean.MediaTimeBean
//import com.base.filerecoveryrecyclebin.databinding.FragmentPrivacyFileImportBinding
import
com.base.filerecoveryrecyclebin.databinding.FragmentPrivacyFileImportBinding
//import com.base.filerecoveryrecyclebin.help.BaseFragment
import
com.base.filerecoveryrecyclebin.help.BaseFragment
//import com.base.filerecoveryrecyclebin.help.MediaStoreHelp.getImageMedia
import
com.base.filerecoveryrecyclebin.help.MediaStoreHelp.getImageMedia
//import com.base.filerecoveryrecyclebin.help.MediaStoreHelp.getVideoMedia
import
com.base.filerecoveryrecyclebin.help.MediaStoreHelp.getVideoMedia
//import kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.Dispatchers
//import kotlinx.coroutines.launch
import
kotlinx.coroutines.launch
//import java.text.SimpleDateFormat
import
java.text.SimpleDateFormat
//import java.util.HashMap
import
java.util.HashMap
//import java.util.Locale
import
java.util.Locale
//
//class PrivacyFileImportFragment(val type: String) : BaseFragment<FragmentPrivacyFileImportBinding>() {
class
PrivacyFileImportFragment
(
val
type
:
String
)
:
BaseFragment
<
FragmentPrivacyFileImportBinding
>()
{
//
// override val binding: FragmentPrivacyFileImportBinding by lazy {
override
val
binding
:
FragmentPrivacyFileImportBinding
by
lazy
{
// FragmentPrivacyFileImportBinding.inflate(layoutInflater)
FragmentPrivacyFileImportBinding
.
inflate
(
layoutInflater
)
// }
}
// private lateinit var adapter: MediaAdapter
private
lateinit
var
adapter
:
MediaAdapter
//
// override fun setView() {
override
fun
setView
()
{
// adapter = MediaAdapter { pair ->
adapter
=
MediaAdapter
{
pair
->
// binding.tvSelectAll.text = if (pair.first) "Unselect ALL" else "Select All"
binding
.
tvSelectAll
.
text
=
if
(
pair
.
first
)
"Unselect ALL"
else
"Select All"
// (requireActivity() as PrivacyImportActivity).showCardImport(type,pair.second)
(
requireActivity
()
as
PrivacyImportActivity
).
showCardImport
(
type
,
pair
.
second
)
// }
}
// binding.rv.adapter = adapter
binding
.
rv
.
adapter
=
adapter
//
// initData()
initData
()
// }
}
//
// @SuppressLint("SetTextI18n")
@SuppressLint
(
"SetTextI18n"
)
// override fun setListener() {
override
fun
setListener
()
{
// binding.tvSelectAll.setOnClickListener {
binding
.
tvSelectAll
.
setOnClickListener
{
// val text = binding.tvSelectAll.text
val
text
=
binding
.
tvSelectAll
.
text
// if (text == "Unselect ALL") {
if
(
text
==
"Unselect ALL"
)
{
// adapter.toggleAllSelect(false)
adapter
.
toggleAllSelect
(
false
)
// } else {
}
else
{
// adapter.toggleAllSelect(true)
adapter
.
toggleAllSelect
(
true
)
// }
}
// }
}
// }
}
//
// private fun initData() = lifecycleScope.launch(Dispatchers.IO) {
private
fun
initData
()
=
lifecycleScope
.
launch
(
Dispatchers
.
IO
)
{
// val list = arrayListOf<MediaBean>()
val
list
=
arrayListOf
<
MediaBean
>()
// if (type == "Photos") {
if
(
type
==
"Photos"
)
{
// requireContext().getImageMedia(list)
requireContext
().
getImageMedia
(
list
)
// } else {
}
else
{
// requireContext().getVideoMedia(list)
requireContext
().
getVideoMedia
(
list
)
// }
}
//
// val hashMap = HashMap<String, ArrayList<MediaBean>>()
val
hashMap
=
HashMap
<
String
,
ArrayList
<
MediaBean
>>()
// list.forEach {
list
.
forEach
{
// val time = SimpleDateFormat("yyyy-MMM-dd", Locale.getDefault()).format(it.time)
val
time
=
SimpleDateFormat
(
"yyyy-MMM-dd"
,
Locale
.
getDefault
()).
format
(
it
.
time
)
// if (hashMap[time].isNullOrEmpty()) {
if
(
hashMap
[
time
].
isNullOrEmpty
())
{
// hashMap[time] = arrayListOf()
hashMap
[
time
]
=
arrayListOf
()
// }
}
// hashMap[time]?.add(it)
hashMap
[
time
]
?.
add
(
it
)
// }
}
//
// val beanList = hashMap.map {
val
beanList
=
hashMap
.
map
{
// MediaTimeBean(it.key, it.value)
MediaTimeBean
(
it
.
key
,
it
.
value
)
// }
}
//
// launch(Dispatchers.Main) {
launch
(
Dispatchers
.
Main
)
{
// adapter.setData(beanList)
adapter
.
setData
(
beanList
)
// }
}
//
// }
}
//
//
//}
}
\ No newline at end of file
\ No newline at end of file
app/src/main/java/com/base/filerecoveryrecyclebin/fragment/PrivacyPageFragment.kt
View file @
1b7a9798
This diff is collapsed.
Click to expand it.
app/src/main/java/com/base/filerecoveryrecyclebin/utils/WhatsappCleanerStringManager.java
0 → 100644
View file @
1b7a9798
package
com
.
base
.
filerecoveryrecyclebin
.
utils
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
WhatsappCleanerStringManager
{
private
static
final
List
<
String
>
documentRecoveryCopies
=
new
ArrayList
<>();
private
static
int
currentCopyIndex
=
0
;
static
{
// 初始化并添加文案到列表
documentRecoveryCopies
.
add
(
"Lost a vital document? Our recovery service might be able to help."
);
documentRecoveryCopies
.
add
(
"Can't find an important document? Try our recovery tool today."
);
documentRecoveryCopies
.
add
(
"Accidentally deleted a document? Recover it with ease using our service."
);
documentRecoveryCopies
.
add
(
"Don't panic over lost documents – our recovery feature is here to assist."
);
documentRecoveryCopies
.
add
(
"Regain access to deleted documents with our simple recovery process."
);
}
public
static
String
getNextCleanerCopy
()
{
if
(
documentRecoveryCopies
.
isEmpty
())
{
return
null
;
// 根据您的需要处理错误情况
}
String
copy
=
documentRecoveryCopies
.
get
(
currentCopyIndex
);
currentCopyIndex
=
(
currentCopyIndex
+
1
)
%
documentRecoveryCopies
.
size
();
return
copy
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment