Commit 71854bf7 authored by leichao.gao's avatar leichao.gao

Merge branch 'master' of gitlab.huolea.com:koko/file-recovery-recyclebin

parents bc29bf5f 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" />
......
......@@ -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
......
......@@ -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()
}
......
......@@ -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 -> {
......
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.core.view.isVisible
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2
import com.base.filerecoveryrecyclebin.bean.ConstObject.rememberOption
import com.base.filerecoveryrecyclebin.bean.ConstObject.rememberRemove
import com.base.filerecoveryrecyclebin.bean.MediaBean
import com.base.filerecoveryrecyclebin.databinding.ActivityPrivacyImportBinding
import com.base.filerecoveryrecyclebin.fragment.PrivacyFileImportFragment
import com.base.filerecoveryrecyclebin.help.BaseActivity
import com.base.filerecoveryrecyclebin.help.KotlinExt.toFormatSize
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.showRemoveOriginalTip
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import java.io.File
class PrivacyImportActivity : BaseActivity<ActivityPrivacyImportBinding>() {
private val TAG = "PrivacyImportActivity"
private val photosImportFragment: PrivacyFileImportFragment by lazy {
PrivacyFileImportFragment("Photos")
}
private val videosImportFragment: PrivacyFileImportFragment by lazy {
PrivacyFileImportFragment("Videos")
}
private val fragments by lazy {
mutableListOf(photosImportFragment, videosImportFragment)
}
override val binding: ActivityPrivacyImportBinding by lazy {
ActivityPrivacyImportBinding.inflate(layoutInflater)
}
override fun initView() {
BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
binding.viewpager2.run {
adapter = object : FragmentStateAdapter(this@PrivacyImportActivity) {
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
}
}
})
}
override fun initListener() {
super.initListener()
binding.llPhotos.setOnClickListener {
binding.viewpager2.currentItem = 0
}
binding.llVideos.setOnClickListener {
binding.viewpager2.currentItem = 1
}
binding.flFanhui.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
onBackPressedDispatcher.addCallback {
finish()
}
}
private val photosPath = arrayListOf<MediaBean>()
private val videosPath = arrayListOf<MediaBean>()
@SuppressLint("SetTextI18n")
fun showCardImport(type: String, list: List<MediaBean>) {
if (type == "Photos") {
photosPath.clear()
photosPath.addAll(list)
} else {
videosPath.clear()
videosPath.addAll(list)
}
val allSelect = arrayListOf<MediaBean>()
allSelect.addAll(photosPath)
allSelect.addAll(videosPath)
if (allSelect.isNotEmpty()) {
binding.cardImport.isVisible = true
binding.tvSelectNumber.text = "${allSelect.size} Selected"
binding.tvSize.text = allSelect.sumOf { File(it.path).length() }.toFormatSize()
binding.tvImport.setOnClickListener {
if (!rememberOption) {
showRemoveOriginalTip { isRememberOption, isRemove ->
rememberOption = isRememberOption
rememberRemove = isRemove
copyMediaToPrivacySpace(allSelect)
}
} else {
copyMediaToPrivacySpace(allSelect)
}
}
} else {
binding.tvImport.setOnClickListener {}
binding.cardImport.isVisible = false
}
}
private fun copyMediaToPrivacySpace(allSelect: ArrayList<MediaBean>) {
binding.flProgress.setOnClickListener { }
binding.flProgress.visibility = View.VISIBLE
lifecycleScope.launch(Dispatchers.IO) {
allSelect.forEach {
LogEx.logDebug(TAG, it.mimeType)
val dir = filesDir
val file = File(it.path)
runCatching {
if (it.mimeType.contains("image")) {
val imageDir = File(dir, "photos")
file.copyTo(File(imageDir, file.name), true)
} else {
val videoDir = File(dir, "videos")
file.copyTo(File(videoDir, file.name), true)
}
if (rememberRemove) {
file.delete()
}
}
}
updateMediaStore()
launch(Dispatchers.Main) {
binding.flProgress.visibility = View.GONE
setResult(0, Intent().apply { putExtra("Result", "Success") })
finish()
}
}
}
}
\ 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.core.view.isVisible
//import androidx.fragment.app.Fragment
//import androidx.lifecycle.lifecycleScope
//import androidx.viewpager2.adapter.FragmentStateAdapter
//import androidx.viewpager2.widget.ViewPager2
//import com.base.filerecoveryrecyclebin.bean.ConstObject.rememberOption
//import com.base.filerecoveryrecyclebin.bean.ConstObject.rememberRemove
//import com.base.filerecoveryrecyclebin.bean.MediaBean
//import com.base.filerecoveryrecyclebin.databinding.ActivityPrivacyImportBinding
//import com.base.filerecoveryrecyclebin.fragment.PrivacyFileImportFragment
//import com.base.filerecoveryrecyclebin.help.BaseActivity
//import com.base.filerecoveryrecyclebin.help.KotlinExt.toFormatSize
//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.showRemoveOriginalTip
//import kotlinx.coroutines.Dispatchers
//import kotlinx.coroutines.launch
//import java.io.File
//
//class PrivacyImportActivity : BaseActivity<ActivityPrivacyImportBinding>() {
//
// private val TAG = "PrivacyImportActivity"
//
// private val photosImportFragment: PrivacyFileImportFragment by lazy {
// PrivacyFileImportFragment("Photos")
// }
// private val videosImportFragment: PrivacyFileImportFragment by lazy {
// PrivacyFileImportFragment("Videos")
// }
//
// private val fragments by lazy {
// mutableListOf(photosImportFragment, videosImportFragment)
// }
//
//
// override val binding: ActivityPrivacyImportBinding by lazy {
// ActivityPrivacyImportBinding.inflate(layoutInflater)
// }
//
//
// override fun initView() {
// BarUtils.setStatusBarLightMode(this, true)
// BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
//
// binding.viewpager2.run {
// adapter = object : FragmentStateAdapter(this@PrivacyImportActivity) {
// 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
// }
// }
// })
// }
//
// override fun initListener() {
// super.initListener()
//
// binding.llPhotos.setOnClickListener {
// binding.viewpager2.currentItem = 0
// }
// binding.llVideos.setOnClickListener {
// binding.viewpager2.currentItem = 1
// }
// binding.flFanhui.setOnClickListener {
// onBackPressedDispatcher.onBackPressed()
// }
// onBackPressedDispatcher.addCallback {
// finish()
// }
// }
//
// private val photosPath = arrayListOf<MediaBean>()
// private val videosPath = arrayListOf<MediaBean>()
//
// @SuppressLint("SetTextI18n")
// fun showCardImport(type: String, list: List<MediaBean>) {
// if (type == "Photos") {
// photosPath.clear()
// photosPath.addAll(list)
// } else {
// videosPath.clear()
// videosPath.addAll(list)
// }
// val allSelect = arrayListOf<MediaBean>()
// allSelect.addAll(photosPath)
// allSelect.addAll(videosPath)
// if (allSelect.isNotEmpty()) {
// binding.cardImport.isVisible = true
// binding.tvSelectNumber.text = "${allSelect.size} Selected"
// binding.tvSize.text = allSelect.sumOf { File(it.path).length() }.toFormatSize()
// binding.tvImport.setOnClickListener {
// if (!rememberOption) {
// showRemoveOriginalTip { isRememberOption, isRemove ->
// rememberOption = isRememberOption
// rememberRemove = isRemove
// copyMediaToPrivacySpace(allSelect)
// }
// } else {
// copyMediaToPrivacySpace(allSelect)
// }
// }
// } else {
// binding.tvImport.setOnClickListener {}
// binding.cardImport.isVisible = false
// }
// }
//
// private fun copyMediaToPrivacySpace(allSelect: ArrayList<MediaBean>) {
// binding.flProgress.setOnClickListener { }
// binding.flProgress.visibility = View.VISIBLE
// lifecycleScope.launch(Dispatchers.IO) {
// allSelect.forEach {
// LogEx.logDebug(TAG, it.mimeType)
// val dir = filesDir
// val file = File(it.path)
//
// runCatching {
// if (it.mimeType.contains("image")) {
// val imageDir = File(dir, "photos")
// file.copyTo(File(imageDir, file.name), true)
// } else {
// val videoDir = File(dir, "videos")
// file.copyTo(File(videoDir, file.name), true)
// }
// if (rememberRemove) {
// file.delete()
// }
// }
// }
// updateMediaStore()
//
// launch(Dispatchers.Main) {
// binding.flProgress.visibility = View.GONE
// setResult(0, Intent().apply { putExtra("Result", "Success") })
// finish()
// }
// }
// }
//
//
//}
\ 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
//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.content.Intent
import android.graphics.Color
import android.os.Build
import android.view.KeyEvent
import androidx.activity.addCallback
import androidx.annotation.RequiresApi
import androidx.core.content.ContextCompat
import androidx.core.widget.addTextChangedListener
import androidx.lifecycle.lifecycleScope
import com.base.filerecoveryrecyclebin.R
import com.base.filerecoveryrecyclebin.bean.ConstObject.privacyPinPassword
import com.base.filerecoveryrecyclebin.databinding.ActivityPrivacyPinOneBinding
import com.base.filerecoveryrecyclebin.help.BaseActivity
import com.base.filerecoveryrecyclebin.help.KotlinExt.array2String
import com.base.filerecoveryrecyclebin.utils.BarUtils
import com.base.filerecoveryrecyclebin.utils.LogEx
import com.base.filerecoveryrecyclebin.view.AsteriskPasswordTransformationMethod
import com.base.filerecoveryrecyclebin.view.DialogViews.showPinReEnterDialog
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
class PrivacyPinOneActivity : BaseActivity<ActivityPrivacyPinOneBinding>() {
private val TAG = "PrivacyPinActivity"
private val firstInput = arrayOf("", "", "", "")
override val binding: ActivityPrivacyPinOneBinding by lazy {
ActivityPrivacyPinOneBinding.inflate(layoutInflater)
}
override fun initView() {
BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
}
@RequiresApi(Build.VERSION_CODES.O)
override fun initListener() {
binding.flFanhui.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
onBackPressedDispatcher.addCallback {
finishToMain()
}
setInput()
setDeleteKey()
}
private fun setDeleteKey() {
arrayOf(binding.edit1, binding.edit2, binding.edit3, binding.edit4).forEach {
it.setOnKeyListener { v, actionId, event ->
if ((event.action == KeyEvent.ACTION_DOWN) && (event.keyCode == KeyEvent.KEYCODE_DEL)) {
if (binding.edit1.hasFocus()) {
binding.edit1.setText("")
}
if (binding.edit2.hasFocus()) {
binding.edit2.setText("")
binding.edit1.requestFocus()
}
if (binding.edit3.hasFocus()) {
binding.edit3.setText("")
binding.edit2.requestFocus()
}
if (binding.edit4.hasFocus()) {
binding.edit4.setText("")
binding.edit3.requestFocus()
}
true
} else {
false
}
}
}
}
private fun startJump() {
if (privacyPinPassword.isNotEmpty()) {
if (privacyPinPassword == firstInput.array2String()) {
startActivity(Intent(this, PrivacySpaceActivity::class.java))
finish()
} else {
warmPassword()
}
} else {
launcher.launch(
Intent(this, PrivacyPinTwoActivity::class.java).apply {
addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
putExtra("FirstInput", firstInput.array2String())
}
) {
startActivity(Intent(this, PrivacySpaceActivity::class.java))
finish()
}
}
}
private fun setInput() {
binding.edit1.setOnFocusChangeListener { v, hasFocus ->
cancelWarmPassword()
binding.fl1.isSelected = hasFocus
}
binding.edit2.setOnFocusChangeListener { v, hasFocus ->
cancelWarmPassword()
binding.fl2.isSelected = hasFocus
}
binding.edit3.setOnFocusChangeListener { v, hasFocus ->
cancelWarmPassword()
binding.fl3.isSelected = hasFocus
}
binding.edit4.setOnFocusChangeListener { v, hasFocus ->
cancelWarmPassword()
binding.fl4.isSelected = hasFocus
}
binding.edit1.transformationMethod = AsteriskPasswordTransformationMethod()
binding.edit2.transformationMethod = AsteriskPasswordTransformationMethod()
binding.edit3.transformationMethod = AsteriskPasswordTransformationMethod()
binding.edit4.transformationMethod = AsteriskPasswordTransformationMethod()
binding.edit1.requestFocus()
binding.edit1.addTextChangedListener {
val text = it.toString()
LogEx.logDebug(TAG, "text=$text")
if (text.isNotEmpty()) {
firstInput[0] = text
binding.edit2.requestFocus()
}
}
binding.edit2.addTextChangedListener {
val text = it.toString()
LogEx.logDebug(TAG, "text=$text")
if (text.isNotEmpty()) {
firstInput[1] = text
binding.edit3.requestFocus()
}
}
binding.edit3.addTextChangedListener {
val text = it.toString()
LogEx.logDebug(TAG, "text=$text")
if (text.isNotEmpty()) {
firstInput[2] = text
binding.edit4.requestFocus()
}
}
binding.edit4.addTextChangedListener {
val text = it.toString()
LogEx.logDebug(TAG, "text=$text")
if (text.isNotEmpty()) {
firstInput[3] = text
startJump()
}
}
}
private fun warmPassword() {
binding.fl1.tag = true
binding.fl1.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin_warm)
binding.fl2.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin_warm)
binding.fl3.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin_warm)
binding.fl4.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin_warm)
binding.edit1.setTextColor(ContextCompat.getColor(this, R.color.color_fa020b))
binding.edit2.setTextColor(ContextCompat.getColor(this, R.color.color_fa020b))
binding.edit3.setTextColor(ContextCompat.getColor(this, R.color.color_fa020b))
binding.edit4.setTextColor(ContextCompat.getColor(this, R.color.color_fa020b))
val dialog = showPinReEnterDialog()
lifecycleScope.launch {
delay(2000)
dialog.dismiss()
}
}
private fun cancelWarmPassword() {
if (binding.fl1.tag == true) {
binding.fl1.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin)
binding.fl2.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin)
binding.fl3.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin)
binding.fl4.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin)
binding.edit1.setTextColor(ContextCompat.getColor(this, R.color.black))
binding.edit2.setTextColor(ContextCompat.getColor(this, R.color.black))
binding.edit3.setTextColor(ContextCompat.getColor(this, R.color.black))
binding.edit4.setTextColor(ContextCompat.getColor(this, R.color.black))
binding.fl1.tag = false
}
}
}
\ No newline at end of file
//package com.base.filerecoveryrecyclebin.activity.privacyspace
//
//import android.content.Intent
//import android.graphics.Color
//import android.os.Build
//import android.view.KeyEvent
//import androidx.activity.addCallback
//import androidx.annotation.RequiresApi
//import androidx.core.content.ContextCompat
//import androidx.core.widget.addTextChangedListener
//import androidx.lifecycle.lifecycleScope
//import com.base.filerecoveryrecyclebin.R
//import com.base.filerecoveryrecyclebin.bean.ConstObject.privacyPinPassword
//import com.base.filerecoveryrecyclebin.databinding.ActivityPrivacyPinOneBinding
//import com.base.filerecoveryrecyclebin.help.BaseActivity
//import com.base.filerecoveryrecyclebin.help.KotlinExt.array2String
//import com.base.filerecoveryrecyclebin.utils.BarUtils
//import com.base.filerecoveryrecyclebin.utils.LogEx
//import com.base.filerecoveryrecyclebin.view.AsteriskPasswordTransformationMethod
//import com.base.filerecoveryrecyclebin.view.DialogViews.showPinReEnterDialog
//import kotlinx.coroutines.delay
//import kotlinx.coroutines.launch
//
//class PrivacyPinOneActivity : BaseActivity<ActivityPrivacyPinOneBinding>() {
//
// private val TAG = "PrivacyPinActivity"
// private val firstInput = arrayOf("", "", "", "")
//
// override val binding: ActivityPrivacyPinOneBinding by lazy {
// ActivityPrivacyPinOneBinding.inflate(layoutInflater)
// }
//
//
// override fun initView() {
// BarUtils.setStatusBarLightMode(this, true)
// BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
//
// }
//
// @RequiresApi(Build.VERSION_CODES.O)
// override fun initListener() {
//
// binding.flFanhui.setOnClickListener {
// onBackPressedDispatcher.onBackPressed()
// }
// onBackPressedDispatcher.addCallback {
// finishToMain()
// }
//
// setInput()
//
// setDeleteKey()
//
//
// }
//
// private fun setDeleteKey() {
// arrayOf(binding.edit1, binding.edit2, binding.edit3, binding.edit4).forEach {
// it.setOnKeyListener { v, actionId, event ->
//
// if ((event.action == KeyEvent.ACTION_DOWN) && (event.keyCode == KeyEvent.KEYCODE_DEL)) {
// if (binding.edit1.hasFocus()) {
// binding.edit1.setText("")
// }
// if (binding.edit2.hasFocus()) {
// binding.edit2.setText("")
// binding.edit1.requestFocus()
// }
// if (binding.edit3.hasFocus()) {
// binding.edit3.setText("")
// binding.edit2.requestFocus()
// }
// if (binding.edit4.hasFocus()) {
// binding.edit4.setText("")
// binding.edit3.requestFocus()
// }
// true
// } else {
// false
// }
// }
//
// }
//
// }
//
// private fun startJump() {
// if (privacyPinPassword.isNotEmpty()) {
// if (privacyPinPassword == firstInput.array2String()) {
// startActivity(Intent(this, PrivacySpaceActivity::class.java))
// finish()
// } else {
// warmPassword()
// }
// } else {
// launcher.launch(
// Intent(this, PrivacyPinTwoActivity::class.java).apply {
// addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
// putExtra("FirstInput", firstInput.array2String())
// }
// ) {
// startActivity(Intent(this, PrivacySpaceActivity::class.java))
// finish()
// }
// }
//
// }
//
// private fun setInput() {
// binding.edit1.setOnFocusChangeListener { v, hasFocus ->
// cancelWarmPassword()
// binding.fl1.isSelected = hasFocus
// }
// binding.edit2.setOnFocusChangeListener { v, hasFocus ->
// cancelWarmPassword()
// binding.fl2.isSelected = hasFocus
// }
// binding.edit3.setOnFocusChangeListener { v, hasFocus ->
// cancelWarmPassword()
// binding.fl3.isSelected = hasFocus
// }
// binding.edit4.setOnFocusChangeListener { v, hasFocus ->
// cancelWarmPassword()
// binding.fl4.isSelected = hasFocus
// }
// binding.edit1.transformationMethod = AsteriskPasswordTransformationMethod()
// binding.edit2.transformationMethod = AsteriskPasswordTransformationMethod()
// binding.edit3.transformationMethod = AsteriskPasswordTransformationMethod()
// binding.edit4.transformationMethod = AsteriskPasswordTransformationMethod()
//
// binding.edit1.requestFocus()
//
// binding.edit1.addTextChangedListener {
// val text = it.toString()
// LogEx.logDebug(TAG, "text=$text")
// if (text.isNotEmpty()) {
// firstInput[0] = text
// binding.edit2.requestFocus()
// }
// }
// binding.edit2.addTextChangedListener {
// val text = it.toString()
// LogEx.logDebug(TAG, "text=$text")
// if (text.isNotEmpty()) {
// firstInput[1] = text
// binding.edit3.requestFocus()
// }
// }
// binding.edit3.addTextChangedListener {
// val text = it.toString()
// LogEx.logDebug(TAG, "text=$text")
// if (text.isNotEmpty()) {
// firstInput[2] = text
// binding.edit4.requestFocus()
// }
// }
// binding.edit4.addTextChangedListener {
// val text = it.toString()
// LogEx.logDebug(TAG, "text=$text")
// if (text.isNotEmpty()) {
// firstInput[3] = text
// startJump()
// }
// }
// }
//
// private fun warmPassword() {
// binding.fl1.tag = true
// binding.fl1.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin_warm)
// binding.fl2.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin_warm)
// binding.fl3.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin_warm)
// binding.fl4.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin_warm)
// binding.edit1.setTextColor(ContextCompat.getColor(this, R.color.color_fa020b))
// binding.edit2.setTextColor(ContextCompat.getColor(this, R.color.color_fa020b))
// binding.edit3.setTextColor(ContextCompat.getColor(this, R.color.color_fa020b))
// binding.edit4.setTextColor(ContextCompat.getColor(this, R.color.color_fa020b))
//
// val dialog = showPinReEnterDialog()
// lifecycleScope.launch {
// delay(2000)
// dialog.dismiss()
// }
// }
//
// private fun cancelWarmPassword() {
// if (binding.fl1.tag == true) {
// binding.fl1.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin)
// binding.fl2.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin)
// binding.fl3.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin)
// binding.fl4.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin)
// binding.edit1.setTextColor(ContextCompat.getColor(this, R.color.black))
// binding.edit2.setTextColor(ContextCompat.getColor(this, R.color.black))
// binding.edit3.setTextColor(ContextCompat.getColor(this, R.color.black))
// binding.edit4.setTextColor(ContextCompat.getColor(this, R.color.black))
// binding.fl1.tag = false
// }
//
// }
//
//}
\ No newline at end of file
package com.base.filerecoveryrecyclebin.activity.privacyspace
import android.graphics.Color
import android.view.KeyEvent
import android.view.View
import android.view.inputmethod.InputMethodManager
import androidx.activity.addCallback
import androidx.core.content.ContextCompat
import androidx.core.widget.addTextChangedListener
import androidx.lifecycle.lifecycleScope
import com.base.filerecoveryrecyclebin.R
import com.base.filerecoveryrecyclebin.bean.ConstObject.privacyPinPassword
import com.base.filerecoveryrecyclebin.databinding.ActivityPrivacyPinTwoBinding
import com.base.filerecoveryrecyclebin.help.BaseActivity
import com.base.filerecoveryrecyclebin.help.KotlinExt.array2String
import com.base.filerecoveryrecyclebin.utils.BarUtils
import com.base.filerecoveryrecyclebin.utils.LogEx
import com.base.filerecoveryrecyclebin.view.AsteriskPasswordTransformationMethod
import com.base.filerecoveryrecyclebin.view.DialogViews.showPinReEnterDialog
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
class PrivacyPinTwoActivity : BaseActivity<ActivityPrivacyPinTwoBinding>() {
private var firstInput = "null"
private val secondInput = arrayOf("", "", "", "")
private val TAG = "PrivacyPinTwoActivity"
override val binding: ActivityPrivacyPinTwoBinding by lazy {
ActivityPrivacyPinTwoBinding.inflate(layoutInflater)
}
override fun initView() {
BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
firstInput = intent.extras?.getString("FirstInput") ?: "null"
LogEx.logDebug(TAG, "firstInput=$firstInput")
}
override fun initListener() {
binding.flFanhui.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
onBackPressedDispatcher.addCallback {
finish()
}
setInput()
setDeleteKey()
}
private fun hideInput() {
val imm = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(binding.edit4.windowToken, 0)
binding.edit4.clearFocus()
}
private fun warmPassword() {
binding.fl1.tag = true
binding.fl1.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin_warm)
binding.fl2.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin_warm)
binding.fl3.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin_warm)
binding.fl4.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin_warm)
binding.edit1.setTextColor(ContextCompat.getColor(this, R.color.color_fa020b))
binding.edit2.setTextColor(ContextCompat.getColor(this, R.color.color_fa020b))
binding.edit3.setTextColor(ContextCompat.getColor(this, R.color.color_fa020b))
binding.edit4.setTextColor(ContextCompat.getColor(this, R.color.color_fa020b))
val dialog = showPinReEnterDialog()
lifecycleScope.launch {
delay(2000)
dialog.dismiss()
}
}
private fun cancelWarmPassword() {
if (binding.fl1.tag == true) {
binding.fl1.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin)
binding.fl2.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin)
binding.fl3.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin)
binding.fl4.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin)
binding.edit1.setTextColor(ContextCompat.getColor(this, R.color.black))
binding.edit2.setTextColor(ContextCompat.getColor(this, R.color.black))
binding.edit3.setTextColor(ContextCompat.getColor(this, R.color.black))
binding.edit4.setTextColor(ContextCompat.getColor(this, R.color.black))
binding.fl1.tag = false
}
}
private fun startJump() {
binding.llInput.visibility = View.GONE
binding.llRememberTip.visibility = View.VISIBLE
hideInput()
onBackPressedDispatcher.addCallback {
setResult(0, intent)
finish()
}
binding.flFanhui.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
}
private fun setInput() {
binding.edit1.setOnFocusChangeListener { v, hasFocus ->
cancelWarmPassword()
binding.fl1.isSelected = hasFocus
}
binding.edit2.setOnFocusChangeListener { v, hasFocus ->
cancelWarmPassword()
binding.fl2.isSelected = hasFocus
}
binding.edit3.setOnFocusChangeListener { v, hasFocus ->
cancelWarmPassword()
binding.fl3.isSelected = hasFocus
}
binding.edit4.setOnFocusChangeListener { v, hasFocus ->
cancelWarmPassword()
binding.fl4.isSelected = hasFocus
}
binding.edit1.transformationMethod = AsteriskPasswordTransformationMethod()
binding.edit2.transformationMethod = AsteriskPasswordTransformationMethod()
binding.edit3.transformationMethod = AsteriskPasswordTransformationMethod()
binding.edit4.transformationMethod = AsteriskPasswordTransformationMethod()
binding.edit1.requestFocus()
binding.edit1.addTextChangedListener {
val text = it.toString()
LogEx.logDebug(TAG, "text=$text")
if (text.isNotEmpty()) {
secondInput[0] = text
binding.edit2.requestFocus()
}
}
binding.edit2.addTextChangedListener {
val text = it.toString()
LogEx.logDebug(TAG, "text=$text")
if (text.isNotEmpty()) {
secondInput[1] = text
binding.edit3.requestFocus()
}
}
binding.edit3.addTextChangedListener {
val text = it.toString()
LogEx.logDebug(TAG, "text=$text")
if (text.isNotEmpty()) {
secondInput[2] = text
binding.edit4.requestFocus()
}
}
binding.edit4.addTextChangedListener {
val text = it.toString()
LogEx.logDebug(TAG, "text=$text")
if (text.isNotEmpty()) {
secondInput[3] = text
if (firstInput == secondInput.array2String()) {
privacyPinPassword = firstInput
startJump()
} else {
warmPassword()
}
}
}
}
private fun setDeleteKey() {
arrayOf(binding.edit1, binding.edit2, binding.edit3, binding.edit4).forEach {
it.setOnKeyListener { v, actionId, event ->
if ((event.action == KeyEvent.ACTION_DOWN) && (event.keyCode == KeyEvent.KEYCODE_DEL)) {
if (binding.edit1.hasFocus()) {
binding.edit1.setText("")
}
if (binding.edit2.hasFocus()) {
binding.edit2.setText("")
binding.edit1.requestFocus()
}
if (binding.edit3.hasFocus()) {
binding.edit3.setText("")
binding.edit2.requestFocus()
}
if (binding.edit4.hasFocus()) {
binding.edit4.setText("")
binding.edit3.requestFocus()
}
true
} else {
false
}
}
}
}
}
\ No newline at end of file
//package com.base.filerecoveryrecyclebin.activity.privacyspace
//
//import android.graphics.Color
//import android.view.KeyEvent
//import android.view.View
//import android.view.inputmethod.InputMethodManager
//import androidx.activity.addCallback
//import androidx.core.content.ContextCompat
//import androidx.core.widget.addTextChangedListener
//import androidx.lifecycle.lifecycleScope
//import com.base.filerecoveryrecyclebin.R
//import com.base.filerecoveryrecyclebin.bean.ConstObject.privacyPinPassword
//import com.base.filerecoveryrecyclebin.databinding.ActivityPrivacyPinTwoBinding
//import com.base.filerecoveryrecyclebin.help.BaseActivity
//import com.base.filerecoveryrecyclebin.help.KotlinExt.array2String
//import com.base.filerecoveryrecyclebin.utils.BarUtils
//import com.base.filerecoveryrecyclebin.utils.LogEx
//import com.base.filerecoveryrecyclebin.view.AsteriskPasswordTransformationMethod
//import com.base.filerecoveryrecyclebin.view.DialogViews.showPinReEnterDialog
//import kotlinx.coroutines.delay
//import kotlinx.coroutines.launch
//
//
//class PrivacyPinTwoActivity : BaseActivity<ActivityPrivacyPinTwoBinding>() {
//
// private var firstInput = "null"
// private val secondInput = arrayOf("", "", "", "")
// private val TAG = "PrivacyPinTwoActivity"
//
// override val binding: ActivityPrivacyPinTwoBinding by lazy {
// ActivityPrivacyPinTwoBinding.inflate(layoutInflater)
// }
//
//
// override fun initView() {
// BarUtils.setStatusBarLightMode(this, true)
// BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
// firstInput = intent.extras?.getString("FirstInput") ?: "null"
// LogEx.logDebug(TAG, "firstInput=$firstInput")
// }
//
// override fun initListener() {
// binding.flFanhui.setOnClickListener {
// onBackPressedDispatcher.onBackPressed()
// }
// onBackPressedDispatcher.addCallback {
// finish()
// }
// setInput()
// setDeleteKey()
// }
//
// private fun hideInput() {
// val imm = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
// imm.hideSoftInputFromWindow(binding.edit4.windowToken, 0)
// binding.edit4.clearFocus()
// }
//
// private fun warmPassword() {
// binding.fl1.tag = true
// binding.fl1.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin_warm)
// binding.fl2.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin_warm)
// binding.fl3.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin_warm)
// binding.fl4.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin_warm)
// binding.edit1.setTextColor(ContextCompat.getColor(this, R.color.color_fa020b))
// binding.edit2.setTextColor(ContextCompat.getColor(this, R.color.color_fa020b))
// binding.edit3.setTextColor(ContextCompat.getColor(this, R.color.color_fa020b))
// binding.edit4.setTextColor(ContextCompat.getColor(this, R.color.color_fa020b))
//
// val dialog = showPinReEnterDialog()
// lifecycleScope.launch {
// delay(2000)
// dialog.dismiss()
// }
// }
//
// private fun cancelWarmPassword() {
// if (binding.fl1.tag == true) {
// binding.fl1.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin)
// binding.fl2.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin)
// binding.fl3.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin)
// binding.fl4.background = ContextCompat.getDrawable(this, R.drawable.bg_border_pin)
// binding.edit1.setTextColor(ContextCompat.getColor(this, R.color.black))
// binding.edit2.setTextColor(ContextCompat.getColor(this, R.color.black))
// binding.edit3.setTextColor(ContextCompat.getColor(this, R.color.black))
// binding.edit4.setTextColor(ContextCompat.getColor(this, R.color.black))
// binding.fl1.tag = false
// }
//
// }
//
// private fun startJump() {
// binding.llInput.visibility = View.GONE
// binding.llRememberTip.visibility = View.VISIBLE
// hideInput()
// onBackPressedDispatcher.addCallback {
// setResult(0, intent)
// finish()
// }
// binding.flFanhui.setOnClickListener {
// onBackPressedDispatcher.onBackPressed()
// }
//
// }
//
// private fun setInput() {
// binding.edit1.setOnFocusChangeListener { v, hasFocus ->
// cancelWarmPassword()
// binding.fl1.isSelected = hasFocus
// }
// binding.edit2.setOnFocusChangeListener { v, hasFocus ->
// cancelWarmPassword()
// binding.fl2.isSelected = hasFocus
// }
// binding.edit3.setOnFocusChangeListener { v, hasFocus ->
// cancelWarmPassword()
// binding.fl3.isSelected = hasFocus
// }
// binding.edit4.setOnFocusChangeListener { v, hasFocus ->
// cancelWarmPassword()
// binding.fl4.isSelected = hasFocus
// }
// binding.edit1.transformationMethod = AsteriskPasswordTransformationMethod()
// binding.edit2.transformationMethod = AsteriskPasswordTransformationMethod()
// binding.edit3.transformationMethod = AsteriskPasswordTransformationMethod()
// binding.edit4.transformationMethod = AsteriskPasswordTransformationMethod()
//
// binding.edit1.requestFocus()
//
// binding.edit1.addTextChangedListener {
// val text = it.toString()
// LogEx.logDebug(TAG, "text=$text")
// if (text.isNotEmpty()) {
// secondInput[0] = text
// binding.edit2.requestFocus()
// }
// }
// binding.edit2.addTextChangedListener {
// val text = it.toString()
// LogEx.logDebug(TAG, "text=$text")
// if (text.isNotEmpty()) {
// secondInput[1] = text
// binding.edit3.requestFocus()
// }
// }
// binding.edit3.addTextChangedListener {
// val text = it.toString()
// LogEx.logDebug(TAG, "text=$text")
// if (text.isNotEmpty()) {
// secondInput[2] = text
// binding.edit4.requestFocus()
// }
// }
// binding.edit4.addTextChangedListener {
// val text = it.toString()
// LogEx.logDebug(TAG, "text=$text")
// if (text.isNotEmpty()) {
// secondInput[3] = text
// if (firstInput == secondInput.array2String()) {
// privacyPinPassword = firstInput
// startJump()
// } else {
// warmPassword()
// }
// }
// }
// }
//
//
// private fun setDeleteKey() {
// arrayOf(binding.edit1, binding.edit2, binding.edit3, binding.edit4).forEach {
// it.setOnKeyListener { v, actionId, event ->
//
// if ((event.action == KeyEvent.ACTION_DOWN) && (event.keyCode == KeyEvent.KEYCODE_DEL)) {
// if (binding.edit1.hasFocus()) {
// binding.edit1.setText("")
// }
// if (binding.edit2.hasFocus()) {
// binding.edit2.setText("")
// binding.edit1.requestFocus()
// }
// if (binding.edit3.hasFocus()) {
// binding.edit3.setText("")
// binding.edit2.requestFocus()
// }
// if (binding.edit4.hasFocus()) {
// binding.edit4.setText("")
// binding.edit3.requestFocus()
// }
// true
// } else {
// false
// }
// }
//
// }
// }
//
//
//}
\ 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
//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
......@@ -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"
......
......@@ -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.getNextPrivacySpaceCopy()
btn = "Hide Content"
ID_WHATSAPP -> {
icon = R.mipmap.h_whatsapp
desc = WhatsappCleanerStringManager.getNextCleanerCopy()
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
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
package com.base.filerecoveryrecyclebin.fragment
import android.content.Intent
import android.view.View
import android.widget.Toast
import androidx.lifecycle.lifecycleScope
import com.base.filerecoveryrecyclebin.activity.privacyspace.PrivacyImportActivity
import com.base.filerecoveryrecyclebin.activity.privacyspace.PrivacyManageActivity
import com.base.filerecoveryrecyclebin.activity.privacyspace.PrivacySpaceActivity
import com.base.filerecoveryrecyclebin.adapter.FileGridAdapter
import com.base.filerecoveryrecyclebin.databinding.FragmentPrivacyPageBinding
import com.base.filerecoveryrecyclebin.help.BaseFragment
import com.base.filerecoveryrecyclebin.help.FileHelp.loadFileByFilter
import com.base.filerecoveryrecyclebin.help.PermissionHelp.checkStorePermission
import com.base.filerecoveryrecyclebin.help.PermissionHelp.requestStorePermission
import com.base.filerecoveryrecyclebin.utils.LogEx
import com.base.filerecoveryrecyclebin.view.DialogViews.showCameraSettingDialog
import com.base.filerecoveryrecyclebin.view.DialogViews.showGerPermission
import com.base.filerecoveryrecyclebin.view.DialogViews.showImageImportDialog
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import java.io.File
import kotlin.random.Random
class PrivacyPageFragment(
val mediaType: String
) : BaseFragment<FragmentPrivacyPageBinding>() {
private val TAG = "PrivacyPageFragment"
override val binding: FragmentPrivacyPageBinding by lazy {
FragmentPrivacyPageBinding.inflate(layoutInflater)
}
private lateinit var adapter: FileGridAdapter
override fun setView() {
adapter = FileGridAdapter()
binding.rv.adapter = adapter
if (requireContext().checkStorePermission()) {
initData()
} else {
val activity = (requireActivity() as PrivacySpaceActivity)
requireContext().showGerPermission("Privacy Space Access",
"To help you protect your privacy, our app needs to scan your device for photos and videos. We will use this information to create a secure private space that only you can access. We do not collect any personal information or data. Please click \"Agree\" to grant us permission to scan your device or \"Cancel\" to exit.",
denyText = "Exit",
allowText = "Agree",
deny = {
activity.finishToMain()
},
allow = {
requireContext().requestStorePermission(activity.launcher, result = {
if (it) {
initData()
} else {
activity.finishToMain()
}
})
})
}
}
override fun setListener() {
arrayOf(binding.ivAdd, binding.ivAddEmpty).forEach {
it.setOnClickListener {
requireContext().showImageImportDialog(import = {
val launcher = (requireActivity() as PrivacySpaceActivity).launcher
launcher.launch(
Intent(requireContext(), PrivacyImportActivity::class.java)
) { activityResult ->
val result = activityResult.data?.extras?.getString("Result")
Toast.makeText(requireContext(), result, Toast.LENGTH_SHORT).show()
initData()
}
}, camera = {
requireContext().showCameraSettingDialog()
})
}
}
binding.swipeRefreshLayout.setOnRefreshListener {
binding.swipeRefreshLayout.isRefreshing = true
initData {
binding.root.postDelayed({
binding.swipeRefreshLayout.isRefreshing = false
}, Random.nextLong(1500))
}
}
binding.tvManager.setOnClickListener {
startActivity(Intent(requireContext(), PrivacyManageActivity::class.java).apply {
putExtra("mediaType", mediaType)
})
}
}
private fun initData(callback: (() -> Unit)? = null) {
val dir = if (mediaType == "Photos") {
File(requireContext().filesDir, "photos")
} else {
File(requireContext().filesDir, "videos")
}
if (!dir.exists()) {
dir.mkdirs()
}
val list = arrayListOf<String>()
lifecycleScope.loadFileByFilter(folder = dir,
filter = { true },
onDo = {
LogEx.logDebug(TAG, "$it")
list.add(it.absolutePath)
},
onFinish = {
lifecycleScope.launch(Dispatchers.Main) {
if (list.isNotEmpty()) {
binding.llEmpty.visibility = View.GONE
binding.rv.visibility = View.VISIBLE
binding.ivAdd.visibility = View.VISIBLE
binding.tvManager.visibility = View.VISIBLE
}
adapter.setData(list)
callback?.invoke()
}
})
}
}
\ No newline at end of file
//package com.base.filerecoveryrecyclebin.fragment
//
//import android.content.Intent
//import android.view.View
//import android.widget.Toast
//import androidx.lifecycle.lifecycleScope
//import com.base.filerecoveryrecyclebin.activity.privacyspace.PrivacyImportActivity
//import com.base.filerecoveryrecyclebin.activity.privacyspace.PrivacyManageActivity
//import com.base.filerecoveryrecyclebin.activity.privacyspace.PrivacySpaceActivity
//import com.base.filerecoveryrecyclebin.adapter.FileGridAdapter
//import com.base.filerecoveryrecyclebin.databinding.FragmentPrivacyPageBinding
//import com.base.filerecoveryrecyclebin.help.BaseFragment
//import com.base.filerecoveryrecyclebin.help.FileHelp.loadFileByFilter
//import com.base.filerecoveryrecyclebin.help.PermissionHelp.checkStorePermission
//import com.base.filerecoveryrecyclebin.help.PermissionHelp.requestStorePermission
//import com.base.filerecoveryrecyclebin.utils.LogEx
//import com.base.filerecoveryrecyclebin.view.DialogViews.showCameraSettingDialog
//import com.base.filerecoveryrecyclebin.view.DialogViews.showGerPermission
//import com.base.filerecoveryrecyclebin.view.DialogViews.showImageImportDialog
//import kotlinx.coroutines.Dispatchers
//import kotlinx.coroutines.launch
//import java.io.File
//import kotlin.random.Random
//
//class PrivacyPageFragment(
// val mediaType: String
//) : BaseFragment<FragmentPrivacyPageBinding>() {
//
// private val TAG = "PrivacyPageFragment"
//
// override val binding: FragmentPrivacyPageBinding by lazy {
// FragmentPrivacyPageBinding.inflate(layoutInflater)
// }
//
// private lateinit var adapter: FileGridAdapter
//
// override fun setView() {
// adapter = FileGridAdapter()
// binding.rv.adapter = adapter
//
// if (requireContext().checkStorePermission()) {
// initData()
// } else {
// val activity = (requireActivity() as PrivacySpaceActivity)
//
// requireContext().showGerPermission("Privacy Space Access",
// "To help you protect your privacy, our app needs to scan your device for photos and videos. We will use this information to create a secure private space that only you can access. We do not collect any personal information or data. Please click \"Agree\" to grant us permission to scan your device or \"Cancel\" to exit.",
// denyText = "Exit",
// allowText = "Agree",
// deny = {
// activity.finishToMain()
// },
// allow = {
// requireContext().requestStorePermission(activity.launcher, result = {
// if (it) {
// initData()
// } else {
// activity.finishToMain()
// }
// })
// })
//
// }
// }
//
// override fun setListener() {
// arrayOf(binding.ivAdd, binding.ivAddEmpty).forEach {
// it.setOnClickListener {
// requireContext().showImageImportDialog(import = {
// val launcher = (requireActivity() as PrivacySpaceActivity).launcher
// launcher.launch(
// Intent(requireContext(), PrivacyImportActivity::class.java)
// ) { activityResult ->
// val result = activityResult.data?.extras?.getString("Result")
// Toast.makeText(requireContext(), result, Toast.LENGTH_SHORT).show()
// initData()
// }
// }, camera = {
// requireContext().showCameraSettingDialog()
// })
// }
// }
// binding.swipeRefreshLayout.setOnRefreshListener {
// binding.swipeRefreshLayout.isRefreshing = true
// initData {
// binding.root.postDelayed({
// binding.swipeRefreshLayout.isRefreshing = false
// }, Random.nextLong(1500))
// }
// }
// binding.tvManager.setOnClickListener {
// startActivity(Intent(requireContext(), PrivacyManageActivity::class.java).apply {
// putExtra("mediaType", mediaType)
// })
// }
//
// }
//
//
// private fun initData(callback: (() -> Unit)? = null) {
// val dir = if (mediaType == "Photos") {
// File(requireContext().filesDir, "photos")
// } else {
// File(requireContext().filesDir, "videos")
// }
// if (!dir.exists()) {
// dir.mkdirs()
// }
// val list = arrayListOf<String>()
//
// lifecycleScope.loadFileByFilter(folder = dir,
// filter = { true },
// onDo = {
// LogEx.logDebug(TAG, "$it")
// list.add(it.absolutePath)
// },
// onFinish = {
// lifecycleScope.launch(Dispatchers.Main) {
// if (list.isNotEmpty()) {
// binding.llEmpty.visibility = View.GONE
// binding.rv.visibility = View.VISIBLE
// binding.ivAdd.visibility = View.VISIBLE
// binding.tvManager.visibility = View.VISIBLE
// }
// adapter.setData(list)
// callback?.invoke()
// }
// })
// }
//}
\ No newline at end of file
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;
}
}
Markdown is supported
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