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
Show 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 @@
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<activity
android:name=
".activity.privacyspace.PrivacyManageActivity"
android:exported=
"false"
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/
>
<!-- <activity-->
<!-- android:name=".activity.privacyspace.PrivacyManageActivity"-->
<!-- android:exported="false"-->
<!-- android:launchMode="singleTop"-->
<!-- android:screenOrientation="portrait"-->
<!-- tools:ignore="DiscouragedApi,LockedOrientationActivity" />--
>
<activity
android:name=
".activity.repeat.RepeatActivity"
android:exported=
"false"
...
...
@@ -150,30 +150,30 @@
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<activity
android:name=
".activity.privacyspace.PrivacyPinTwoActivity"
android:exported=
"false"
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/
>
<activity
android:name=
".activity.privacyspace.PrivacyPinOneActivity"
android:exported=
"false"
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/
>
<activity
android:name=
".activity.privacyspace.PrivacyImportActivity"
android:exported=
"false"
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/
>
<activity
android:name=
".activity.privacyspace.PrivacySpaceActivity"
android:exported=
"false"
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/
>
<!-- <activity-->
<!-- android:name=".activity.privacyspace.PrivacyPinTwoActivity"-->
<!-- android:exported="false"-->
<!-- android:launchMode="singleTop"-->
<!-- android:screenOrientation="portrait"-->
<!-- tools:ignore="DiscouragedApi,LockedOrientationActivity" />--
>
<!-- <activity-->
<!-- android:name=".activity.privacyspace.PrivacyPinOneActivity"-->
<!-- android:exported="false"-->
<!-- android:launchMode="singleTop"-->
<!-- android:screenOrientation="portrait"-->
<!-- tools:ignore="DiscouragedApi,LockedOrientationActivity" />--
>
<!-- <activity-->
<!-- android:name=".activity.privacyspace.PrivacyImportActivity"-->
<!-- android:exported="false"-->
<!-- android:launchMode="singleTop"-->
<!-- android:screenOrientation="portrait"-->
<!-- tools:ignore="DiscouragedApi,LockedOrientationActivity" />--
>
<!-- <activity-->
<!-- android:name=".activity.privacyspace.PrivacySpaceActivity"-->
<!-- android:exported="false"-->
<!-- android:launchMode="singleTop"-->
<!-- android:screenOrientation="portrait"-->
<!-- tools:ignore="DiscouragedApi,LockedOrientationActivity" />--
>
<activity
android:name=
".activity.recovery.FileRecoveredActivity"
android:exported=
"false"
...
...
@@ -192,13 +192,6 @@
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
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
android:name=
"com.google.android.gms.ads.flag.OPTIMIZE_INITIALIZATION"
android:value=
"true"
/>
...
...
app/src/main/java/com/base/filerecoveryrecyclebin/MyApplication.kt
View file @
1b7a9798
...
...
@@ -8,7 +8,6 @@ import android.text.TextUtils
import
com.base.filerecoveryrecyclebin.activity.SplashActivity
import
com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
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.fcm.FCMManager
import
com.base.filerecoveryrecyclebin.fcm.RecoveryTimerManager
...
...
@@ -20,7 +19,6 @@ import com.base.filerecoveryrecyclebin.utils.AppPreferences
import
com.base.filerecoveryrecyclebin.utils.InstallHelps
import
com.base.filerecoveryrecyclebin.utils.LogEx
import
com.base.filerecoveryrecyclebin.utils.NewComUtils
import
com.google.android.gms.ads.MobileAds
import
com.google.android.gms.ads.identifier.AdvertisingIdClient
import
kotlinx.coroutines.Dispatchers
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
import
androidx.activity.OnBackPressedCallback
import
androidx.core.view.updatePadding
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.repeat.RepeatAnimationActivity
import
com.base.filerecoveryrecyclebin.activity.screenshot.ScreenShotAnimationActivity
...
...
@@ -75,16 +73,6 @@ class ResultActivity : BaseActivity<ActivityLayoutResultBinding>() {
putExtra
(
"ScanType"
,
SCAN_DOCUMENTS
)
})
}
PRIVACY_SPACE
->
{
if
(
privacyPinPassword
.
isNotEmpty
())
{
startActivity
(
Intent
(
this
,
PrivacyPinOneActivity
::
class
.
java
))
}
else
{
startActivity
(
Intent
(
this
,
PrivacySpaceActivity
::
class
.
java
).
apply
{
})
}
}
}
finish
()
}
...
...
app/src/main/java/com/base/filerecoveryrecyclebin/activity/SplashActivity.kt
View file @
1b7a9798
...
...
@@ -12,23 +12,21 @@ import androidx.lifecycle.lifecycleScope
import
com.base.filerecoveryrecyclebin.MyApplication
import
com.base.filerecoveryrecyclebin.activity.guide.GuideActivity
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.repeat.RepeatActivity
import
com.base.filerecoveryrecyclebin.activity.screenshot.ScreenShotActivity
import
com.base.filerecoveryrecyclebin.activity.whatsapp.WhatsAppCleanerAnimationActivity
import
com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import
com.base.filerecoveryrecyclebin.bean.ConstObject
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_PHOTOS
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_SIMILAR_IMAGE
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_WHATSAPP
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ifAgreePrivacy
import
com.base.filerecoveryrecyclebin.bean.ConstObject.isGuide
import
com.base.filerecoveryrecyclebin.bean.ConstObject.privacyPinPassword
import
com.base.filerecoveryrecyclebin.databinding.ActivitySplashBinding
import
com.base.filerecoveryrecyclebin.fcm.CloseNotificationReceiver
import
com.base.filerecoveryrecyclebin.fcm.CloseNotificationReceiver.Companion.NotificationId
...
...
@@ -145,14 +143,8 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>() {
})
}
ID_PRIVACY_SPACE
->
{
if
(
privacyPinPassword
.
isNotEmpty
())
{
startActivity
(
Intent
(
this
,
PrivacyPinOneActivity
::
class
.
java
))
}
else
{
startActivity
(
Intent
(
this
,
PrivacySpaceActivity
::
class
.
java
).
apply
{
})
}
ID_WHATSAPP
->
{
startActivity
(
Intent
(
this
,
WhatsAppCleanerAnimationActivity
::
class
.
java
))
}
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
import
android.annotation.SuppressLint
import
android.graphics.Color
import
android.os.Environment
import
android.view.View
import
android.widget.Toast
import
androidx.core.view.updatePadding
import
androidx.lifecycle.lifecycleScope
import
com.base.filerecoveryrecyclebin.adapter.MediaSubAdapter
import
com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import
com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils
import
com.base.filerecoveryrecyclebin.bean.MediaBean
import
com.base.filerecoveryrecyclebin.databinding.ActivityPrivacyManageBinding
import
com.base.filerecoveryrecyclebin.help.BaseActivity
import
com.base.filerecoveryrecyclebin.help.FileHelp.loadFileByFilter
import
com.base.filerecoveryrecyclebin.help.MediaStoreHelp.updateMediaStore
import
com.base.filerecoveryrecyclebin.utils.BarUtils
import
com.base.filerecoveryrecyclebin.utils.LogEx
import
com.base.filerecoveryrecyclebin.view.DialogViews.showDeletePermanentlyDialog
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.launch
import
java.io.File
class
PrivacyManageActivity
:
BaseActivity
<
ActivityPrivacyManageBinding
>()
{
private
val
TAG
=
"PrivacyManageActivity"
private
var
mediaType
:
String
=
""
private
lateinit
var
mediaSubAdapter
:
MediaSubAdapter
override
val
binding
:
ActivityPrivacyManageBinding
by
lazy
{
ActivityPrivacyManageBinding
.
inflate
(
layoutInflater
)
}
override
fun
initView
()
{
BarUtils
.
setStatusBarLightMode
(
this
,
true
)
BarUtils
.
setStatusBarColor
(
this
,
Color
.
TRANSPARENT
)
binding
.
root
.
updatePadding
(
top
=
BarUtils
.
getStatusBarHeight
())
mediaType
=
intent
?.
extras
?.
getString
(
"mediaType"
)
?:
""
mediaSubAdapter
=
MediaSubAdapter
()
binding
.
rv
.
adapter
=
mediaSubAdapter
initData
()
}
@SuppressLint
(
"SetTextI18n"
)
override
fun
initListener
()
{
binding
.
llDownload
.
setOnClickListener
{
downloadCopy
()
}
binding
.
llDelete
.
setOnClickListener
{
deleteFilesDirMedia
()
}
binding
.
tvSelectAll
.
setOnClickListener
{
binding
.
tvSelectAll
.
isSelected
=
!
binding
.
tvSelectAll
.
isSelected
mediaSubAdapter
.
toggleSelect
(
binding
.
tvSelectAll
.
isSelected
)
if
(
binding
.
tvSelectAll
.
isSelected
)
{
binding
.
tvSelectAll
.
text
=
"Unselect All"
}
else
{
binding
.
tvSelectAll
.
text
=
"Select All"
}
}
binding
.
flGuanbi
.
setOnClickListener
{
finish
()
}
}
private
fun
deleteFilesDirMedia
()
{
showDeletePermanentlyDialog
{
AdmobMaxHelper
.
admobMaxShowInterstitialAd
(
this
)
{
lifecycleScope
.
launch
(
Dispatchers
.
IO
)
{
val
list
=
mediaSubAdapter
.
getSelectData
()
list
.
forEach
{
runCatching
{
File
(
it
.
path
).
delete
()
}
}
launch
(
Dispatchers
.
Main
)
{
Toast
.
makeText
(
this
@PrivacyManageActivity
,
"success"
,
Toast
.
LENGTH_SHORT
).
show
()
mediaSubAdapter
.
removeData
(
list
)
}
}
}
}
}
private
fun
downloadCopy
()
=
lifecycleScope
.
launch
(
Dispatchers
.
IO
)
{
mediaSubAdapter
.
getSelectData
().
forEach
{
bean
->
runCatching
{
val
file
=
File
(
bean
.
path
)
val
dir
=
Environment
.
getExternalStoragePublicDirectory
(
Environment
.
DIRECTORY_DOWNLOADS
)
file
.
copyTo
(
File
(
dir
,
file
.
name
))
}
}
this
@PrivacyManageActivity
.
updateMediaStore
()
launch
(
Dispatchers
.
Main
)
{
Toast
.
makeText
(
this
@PrivacyManageActivity
,
"success"
,
Toast
.
LENGTH_SHORT
).
show
()
mediaSubAdapter
.
toggleSelect
(
false
)
}
}
private
fun
initData
()
{
val
dir
=
getFilesMediaDir
()
if
(!
dir
.
exists
())
{
dir
.
mkdirs
()
}
val
list
=
arrayListOf
<
MediaBean
>()
lifecycleScope
.
loadFileByFilter
(
folder
=
dir
,
filter
=
{
true
},
onDo
=
{
LogEx
.
logDebug
(
TAG
,
"$it"
)
list
.
add
(
MediaBean
(
it
.
absolutePath
))
},
onFinish
=
{
lifecycleScope
.
launch
(
Dispatchers
.
Main
)
{
if
(
list
.
isNotEmpty
())
{
binding
.
rv
.
visibility
=
View
.
VISIBLE
mediaSubAdapter
.
setData
(
list
)
}
}
})
}
private
fun
getFilesMediaDir
():
File
{
return
if
(
mediaType
==
"Photos"
)
{
File
(
filesDir
,
"photos"
)
}
else
{
File
(
filesDir
,
"videos"
)
}
}
}
\ No newline at end of file
//package com.base.filerecoveryrecyclebin.activity.privacyspace
//
//import android.annotation.SuppressLint
//import android.graphics.Color
//import android.os.Environment
//import android.view.View
//import android.widget.Toast
//import androidx.core.view.updatePadding
//import androidx.lifecycle.lifecycleScope
//import com.base.filerecoveryrecyclebin.adapter.MediaSubAdapter
//import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
//import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils
//import com.base.filerecoveryrecyclebin.bean.MediaBean
//import com.base.filerecoveryrecyclebin.databinding.ActivityPrivacyManageBinding
//import com.base.filerecoveryrecyclebin.help.BaseActivity
//import com.base.filerecoveryrecyclebin.help.FileHelp.loadFileByFilter
//import com.base.filerecoveryrecyclebin.help.MediaStoreHelp.updateMediaStore
//import com.base.filerecoveryrecyclebin.utils.BarUtils
//import com.base.filerecoveryrecyclebin.utils.LogEx
//import com.base.filerecoveryrecyclebin.view.DialogViews.showDeletePermanentlyDialog
//import kotlinx.coroutines.Dispatchers
//import kotlinx.coroutines.launch
//import java.io.File
//
//class PrivacyManageActivity : BaseActivity<ActivityPrivacyManageBinding>() {
//
// private val TAG = "PrivacyManageActivity"
// private var mediaType: String = ""
// private lateinit var mediaSubAdapter: MediaSubAdapter
//
// override val binding: ActivityPrivacyManageBinding by lazy {
// ActivityPrivacyManageBinding.inflate(layoutInflater)
// }
//
//
// override fun initView() {
// BarUtils.setStatusBarLightMode(this, true)
// BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
// binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
// mediaType = intent?.extras?.getString("mediaType") ?: ""
//
//
// mediaSubAdapter = MediaSubAdapter()
// binding.rv.adapter = mediaSubAdapter
// initData()
// }
//
// @SuppressLint("SetTextI18n")
// override fun initListener() {
//
// binding.llDownload.setOnClickListener {
// downloadCopy()
// }
// binding.llDelete.setOnClickListener {
// deleteFilesDirMedia()
// }
// binding.tvSelectAll.setOnClickListener {
// binding.tvSelectAll.isSelected = !binding.tvSelectAll.isSelected
// mediaSubAdapter.toggleSelect(binding.tvSelectAll.isSelected)
// if (binding.tvSelectAll.isSelected) {
// binding.tvSelectAll.text = "Unselect All"
// } else {
// binding.tvSelectAll.text = "Select All"
// }
// }
// binding.flGuanbi.setOnClickListener {
// finish()
// }
// }
//
// private fun deleteFilesDirMedia() {
// showDeletePermanentlyDialog {
// AdmobMaxHelper.admobMaxShowInterstitialAd(this) {
// lifecycleScope.launch(Dispatchers.IO) {
// val list = mediaSubAdapter.getSelectData()
// list.forEach {
// runCatching { File(it.path).delete() }
// }
// launch(Dispatchers.Main) {
// Toast.makeText(this@PrivacyManageActivity, "success", Toast.LENGTH_SHORT).show()
// mediaSubAdapter.removeData(list)
// }
// }
// }
// }
// }
//
// private fun downloadCopy() = lifecycleScope.launch(Dispatchers.IO) {
// mediaSubAdapter.getSelectData().forEach { bean ->
// runCatching {
// val file = File(bean.path)
// val dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
// file.copyTo(File(dir, file.name))
// }
// }
// this@PrivacyManageActivity.updateMediaStore()
// launch(Dispatchers.Main) {
// Toast.makeText(this@PrivacyManageActivity, "success", Toast.LENGTH_SHORT).show()
// mediaSubAdapter.toggleSelect(false)
// }
// }
//
// private fun initData() {
// val dir = getFilesMediaDir()
// if (!dir.exists()) {
// dir.mkdirs()
// }
// val list = arrayListOf<MediaBean>()
//
// lifecycleScope.loadFileByFilter(folder = dir, filter = { true }, onDo = {
// LogEx.logDebug(TAG, "$it")
// list.add(MediaBean(it.absolutePath))
// }, onFinish = {
// lifecycleScope.launch(Dispatchers.Main) {
// if (list.isNotEmpty()) {
// binding.rv.visibility = View.VISIBLE
// mediaSubAdapter.setData(list)
// }
// }
// })
// }
//
// private fun getFilesMediaDir(): File {
// return if (mediaType == "Photos") {
// File(filesDir, "photos")
// } else {
// File(filesDir, "videos")
// }
// }
//
//}
\ 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
import
android.annotation.SuppressLint
import
android.content.Intent
import
android.graphics.Color
import
android.view.View
import
androidx.activity.addCallback
import
androidx.fragment.app.Fragment
import
androidx.viewpager2.adapter.FragmentStateAdapter
import
androidx.viewpager2.widget.ViewPager2
import
com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import
com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils
import
com.base.filerecoveryrecyclebin.bean.ConstObject.privacyPinPassword
import
com.base.filerecoveryrecyclebin.databinding.ActivityPrivacySpaceBinding
import
com.base.filerecoveryrecyclebin.fragment.PrivacyPageFragment
import
com.base.filerecoveryrecyclebin.help.BaseActivity
import
com.base.filerecoveryrecyclebin.utils.BarUtils
import
com.base.filerecoveryrecyclebin.view.DialogViews.showExitFunctionDialog
/**
* 隐私空间
*/
class
PrivacySpaceActivity
:
BaseActivity
<
ActivityPrivacySpaceBinding
>()
{
override
val
binding
:
ActivityPrivacySpaceBinding
by
lazy
{
ActivityPrivacySpaceBinding
.
inflate
(
layoutInflater
)
}
private
val
photosFragment
:
PrivacyPageFragment
by
lazy
{
PrivacyPageFragment
(
"Photos"
)
}
private
val
videosFragment
:
PrivacyPageFragment
by
lazy
{
PrivacyPageFragment
(
"Videos"
)
}
private
val
fragments
by
lazy
{
mutableListOf
(
photosFragment
,
videosFragment
)
}
@SuppressLint
(
"SetTextI18n"
)
override
fun
initView
()
{
BarUtils
.
setStatusBarLightMode
(
this
,
true
)
BarUtils
.
setStatusBarColor
(
this
,
Color
.
TRANSPARENT
)
binding
.
viewpager2
.
run
{
adapter
=
object
:
FragmentStateAdapter
(
this
@PrivacySpaceActivity
)
{
override
fun
getItemCount
():
Int
{
return
fragments
.
size
}
override
fun
createFragment
(
position
:
Int
):
Fragment
{
return
fragments
[
position
]
}
}
}
binding
.
viewpager2
.
registerOnPageChangeCallback
(
object
:
ViewPager2
.
OnPageChangeCallback
()
{
override
fun
onPageSelected
(
position
:
Int
)
{
if
(
position
==
0
)
{
binding
.
llPhotos
.
isSelected
=
true
binding
.
llVideos
.
isSelected
=
false
}
else
{
binding
.
llVideos
.
isSelected
=
true
binding
.
llPhotos
.
isSelected
=
false
}
}
})
if
(
privacyPinPassword
.
isEmpty
())
{
binding
.
tvUninstallTip
.
setTextColor
(
Color
.
parseColor
(
"#FAB44B"
))
binding
.
tvGoOrSetting
.
text
=
"Setting"
}
else
{
binding
.
tvPinTip
.
visibility
=
View
.
GONE
binding
.
tvGoOrSetting
.
text
=
"Got it"
}
}
override
fun
initListener
()
{
super
.
initListener
()
binding
.
tvGoOrSetting
.
setOnClickListener
{
if
(
privacyPinPassword
.
isEmpty
())
{
startActivity
(
Intent
(
this
,
PrivacyPinOneActivity
::
class
.
java
))
}
else
{
binding
.
llTip
.
visibility
=
View
.
GONE
}
}
binding
.
llPhotos
.
setOnClickListener
{
binding
.
viewpager2
.
currentItem
=
0
}
binding
.
llVideos
.
setOnClickListener
{
binding
.
viewpager2
.
currentItem
=
1
}
onBackPressedDispatcher
.
addCallback
{
showExitFunctionDialog
(
true
)
{
if
(
it
)
{
AdmobMaxHelper
.
admobMaxShowInterstitialAd
(
this
@PrivacySpaceActivity
)
{
finishToMain
()
}
}
else
{
finishToMain
()
}
}
}
binding
.
flFanhui
.
setOnClickListener
{
onBackPressedDispatcher
.
onBackPressed
()
}
}
}
\ No newline at end of file
//package com.base.filerecoveryrecyclebin.activity.privacyspace
//
//import android.annotation.SuppressLint
//import android.content.Intent
//import android.graphics.Color
//import android.view.View
//import androidx.activity.addCallback
//import androidx.fragment.app.Fragment
//import androidx.viewpager2.adapter.FragmentStateAdapter
//import androidx.viewpager2.widget.ViewPager2
//import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
//import com.base.filerecoveryrecyclebin.ads.admob.AdmobInterstitialUtils
//import com.base.filerecoveryrecyclebin.bean.ConstObject.privacyPinPassword
//import com.base.filerecoveryrecyclebin.databinding.ActivityPrivacySpaceBinding
//import com.base.filerecoveryrecyclebin.fragment.PrivacyPageFragment
//import com.base.filerecoveryrecyclebin.help.BaseActivity
//import com.base.filerecoveryrecyclebin.utils.BarUtils
//import com.base.filerecoveryrecyclebin.view.DialogViews.showExitFunctionDialog
//
///**
// * 隐私空间
// */
//class PrivacySpaceActivity : BaseActivity<ActivityPrivacySpaceBinding>() {
//
// override val binding: ActivityPrivacySpaceBinding by lazy {
// ActivityPrivacySpaceBinding.inflate(layoutInflater)
// }
// private val photosFragment: PrivacyPageFragment by lazy {
// PrivacyPageFragment("Photos")
// }
//
// private val videosFragment: PrivacyPageFragment by lazy {
// PrivacyPageFragment("Videos")
// }
// private val fragments by lazy {
// mutableListOf(photosFragment, videosFragment)
// }
//
//
// @SuppressLint("SetTextI18n")
// override fun initView() {
// BarUtils.setStatusBarLightMode(this, true)
// BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
//
// binding.viewpager2.run {
// adapter = object : FragmentStateAdapter(this@PrivacySpaceActivity) {
// override fun getItemCount(): Int {
// return fragments.size
// }
//
// override fun createFragment(position: Int): Fragment {
// return fragments[position]
// }
// }
// }
// binding.viewpager2.registerOnPageChangeCallback(object :
// ViewPager2.OnPageChangeCallback() {
// override fun onPageSelected(position: Int) {
// if (position == 0) {
// binding.llPhotos.isSelected = true
// binding.llVideos.isSelected = false
// } else {
// binding.llVideos.isSelected = true
// binding.llPhotos.isSelected = false
// }
// }
// })
// if (privacyPinPassword.isEmpty()) {
// binding.tvUninstallTip.setTextColor(Color.parseColor("#FAB44B"))
// binding.tvGoOrSetting.text = "Setting"
// } else {
// binding.tvPinTip.visibility = View.GONE
// binding.tvGoOrSetting.text = "Got it"
// }
// }
//
// override fun initListener() {
// super.initListener()
//
// binding.tvGoOrSetting.setOnClickListener {
// if (privacyPinPassword.isEmpty()) {
// startActivity(Intent(this, PrivacyPinOneActivity::class.java))
// } else {
// binding.llTip.visibility = View.GONE
// }
// }
// binding.llPhotos.setOnClickListener {
// binding.viewpager2.currentItem = 0
// }
// binding.llVideos.setOnClickListener {
// binding.viewpager2.currentItem = 1
// }
// onBackPressedDispatcher.addCallback {
// showExitFunctionDialog(true) {
// if (it) {
// AdmobMaxHelper.admobMaxShowInterstitialAd(this@PrivacySpaceActivity) {
// finishToMain()
// }
// } else {
// finishToMain()
// }
// }
// }
// binding.flFanhui.setOnClickListener {
// onBackPressedDispatcher.onBackPressed()
// }
//
// }
//
//}
\ 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 {
const
val
ID_RECOVERY_PHOTOS
=
13000
const
val
ID_RECOVERY_VIDEOS
=
13001
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_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
import
com.base.filerecoveryrecyclebin.R
import
com.base.filerecoveryrecyclebin.activity.SplashActivity
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_PHOTOS
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_SIMILAR_IMAGE
import
com.base.filerecoveryrecyclebin.bean.ConstObject.ID_WHATSAPP
import
com.base.filerecoveryrecyclebin.utils.AppPreferences
import
com.base.filerecoveryrecyclebin.utils.CleanJunkStringResourceManager
import
com.base.filerecoveryrecyclebin.utils.DocumentRecoveryStringManager
...
...
@@ -31,6 +31,7 @@ import com.base.filerecoveryrecyclebin.utils.PhotoRecoveryStringManager
import
com.base.filerecoveryrecyclebin.utils.PrivacySpaceStringManager
import
com.base.filerecoveryrecyclebin.utils.ScreenshotCleanupStringManager
import
com.base.filerecoveryrecyclebin.utils.VideoRecoveryStringManager
import
com.base.filerecoveryrecyclebin.utils.WhatsappCleanerStringManager
import
java.util.Random
/**
...
...
@@ -86,10 +87,10 @@ object NotificationUtil {
btn
=
"Restore Document"
}
ID_
PRIVACY_SPACE
->
{
icon
=
R
.
mipmap
.
space
desc
=
PrivacySpaceStringManager
.
getNextPrivacySpace
Copy
()
btn
=
"
Hide Content
"
ID_
WHATSAPP
->
{
icon
=
R
.
mipmap
.
h_whatsapp
desc
=
WhatsappCleanerStringManager
.
getNextCleaner
Copy
()
btn
=
"
WhatsApp Cleaner
"
}
}
bigRemoteViews
.
setImageViewResource
(
R
.
id
.
iv_icon
,
icon
)
...
...
@@ -271,6 +272,6 @@ object NotificationUtil {
ID_RECOVERY_PHOTOS
,
ID_RECOVERY_VIDEOS
,
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
import
android.annotation.SuppressLint
import
androidx.lifecycle.lifecycleScope
import
com.base.filerecoveryrecyclebin.activity.privacyspace.PrivacyImportActivity
import
com.base.filerecoveryrecyclebin.adapter.MediaAdapter
import
com.base.filerecoveryrecyclebin.bean.MediaBean
import
com.base.filerecoveryrecyclebin.bean.MediaTimeBean
import
com.base.filerecoveryrecyclebin.databinding.FragmentPrivacyFileImportBinding
import
com.base.filerecoveryrecyclebin.help.BaseFragment
import
com.base.filerecoveryrecyclebin.help.MediaStoreHelp.getImageMedia
import
com.base.filerecoveryrecyclebin.help.MediaStoreHelp.getVideoMedia
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.launch
import
java.text.SimpleDateFormat
import
java.util.HashMap
import
java.util.Locale
class
PrivacyFileImportFragment
(
val
type
:
String
)
:
BaseFragment
<
FragmentPrivacyFileImportBinding
>()
{
override
val
binding
:
FragmentPrivacyFileImportBinding
by
lazy
{
FragmentPrivacyFileImportBinding
.
inflate
(
layoutInflater
)
}
private
lateinit
var
adapter
:
MediaAdapter
override
fun
setView
()
{
adapter
=
MediaAdapter
{
pair
->
binding
.
tvSelectAll
.
text
=
if
(
pair
.
first
)
"Unselect ALL"
else
"Select All"
(
requireActivity
()
as
PrivacyImportActivity
).
showCardImport
(
type
,
pair
.
second
)
}
binding
.
rv
.
adapter
=
adapter
initData
()
}
@SuppressLint
(
"SetTextI18n"
)
override
fun
setListener
()
{
binding
.
tvSelectAll
.
setOnClickListener
{
val
text
=
binding
.
tvSelectAll
.
text
if
(
text
==
"Unselect ALL"
)
{
adapter
.
toggleAllSelect
(
false
)
}
else
{
adapter
.
toggleAllSelect
(
true
)
}
}
}
private
fun
initData
()
=
lifecycleScope
.
launch
(
Dispatchers
.
IO
)
{
val
list
=
arrayListOf
<
MediaBean
>()
if
(
type
==
"Photos"
)
{
requireContext
().
getImageMedia
(
list
)
}
else
{
requireContext
().
getVideoMedia
(
list
)
}
val
hashMap
=
HashMap
<
String
,
ArrayList
<
MediaBean
>>()
list
.
forEach
{
val
time
=
SimpleDateFormat
(
"yyyy-MMM-dd"
,
Locale
.
getDefault
()).
format
(
it
.
time
)
if
(
hashMap
[
time
].
isNullOrEmpty
())
{
hashMap
[
time
]
=
arrayListOf
()
}
hashMap
[
time
]
?.
add
(
it
)
}
val
beanList
=
hashMap
.
map
{
MediaTimeBean
(
it
.
key
,
it
.
value
)
}
launch
(
Dispatchers
.
Main
)
{
adapter
.
setData
(
beanList
)
}
}
}
\ No newline at end of file
//package com.base.filerecoveryrecyclebin.fragment
//
//import android.annotation.SuppressLint
//import androidx.lifecycle.lifecycleScope
//import com.base.filerecoveryrecyclebin.adapter.MediaAdapter
//import com.base.filerecoveryrecyclebin.bean.MediaBean
//import com.base.filerecoveryrecyclebin.bean.MediaTimeBean
//import com.base.filerecoveryrecyclebin.databinding.FragmentPrivacyFileImportBinding
//import com.base.filerecoveryrecyclebin.help.BaseFragment
//import com.base.filerecoveryrecyclebin.help.MediaStoreHelp.getImageMedia
//import com.base.filerecoveryrecyclebin.help.MediaStoreHelp.getVideoMedia
//import kotlinx.coroutines.Dispatchers
//import kotlinx.coroutines.launch
//import java.text.SimpleDateFormat
//import java.util.HashMap
//import java.util.Locale
//
//class PrivacyFileImportFragment(val type: String) : BaseFragment<FragmentPrivacyFileImportBinding>() {
//
// override val binding: FragmentPrivacyFileImportBinding by lazy {
// FragmentPrivacyFileImportBinding.inflate(layoutInflater)
// }
// private lateinit var adapter: MediaAdapter
//
// override fun setView() {
// adapter = MediaAdapter { pair ->
// binding.tvSelectAll.text = if (pair.first) "Unselect ALL" else "Select All"
// (requireActivity() as PrivacyImportActivity).showCardImport(type,pair.second)
// }
// binding.rv.adapter = adapter
//
// initData()
// }
//
// @SuppressLint("SetTextI18n")
// override fun setListener() {
// binding.tvSelectAll.setOnClickListener {
// val text = binding.tvSelectAll.text
// if (text == "Unselect ALL") {
// adapter.toggleAllSelect(false)
// } else {
// adapter.toggleAllSelect(true)
// }
// }
// }
//
// private fun initData() = lifecycleScope.launch(Dispatchers.IO) {
// val list = arrayListOf<MediaBean>()
// if (type == "Photos") {
// requireContext().getImageMedia(list)
// } else {
// requireContext().getVideoMedia(list)
// }
//
// val hashMap = HashMap<String, ArrayList<MediaBean>>()
// list.forEach {
// val time = SimpleDateFormat("yyyy-MMM-dd", Locale.getDefault()).format(it.time)
// if (hashMap[time].isNullOrEmpty()) {
// hashMap[time] = arrayListOf()
// }
// hashMap[time]?.add(it)
// }
//
// val beanList = hashMap.map {
// MediaTimeBean(it.key, it.value)
// }
//
// launch(Dispatchers.Main) {
// adapter.setData(beanList)
// }
//
// }
//
//
//}
\ 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