Commit c81d9d2a authored by wanglei's avatar wanglei

替换包名

parent 28cd9e39
...@@ -5,11 +5,11 @@ plugins { ...@@ -5,11 +5,11 @@ plugins {
android { android {
namespace 'com.test.mydemo3' namespace 'com.xm.test.myfilemaster'
compileSdk 34 compileSdk 34
defaultConfig { defaultConfig {
applicationId "com.tttt.datarecoveryrenew" applicationId "com.xm.test.myfilemaster"
minSdk 25 minSdk 25
targetSdk 33 targetSdk 33
versionCode 1 versionCode 1
......
package com.test.mydemo3 package com.xm.mydemo3
import androidx.test.platform.app.InstrumentationRegistry import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4
......
...@@ -108,13 +108,17 @@ ...@@ -108,13 +108,17 @@
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
</activity> <!-- 病毒扫描,key是和包名绑定的 --> </activity>
<!-- 病毒扫描,key是和包名绑定的 -->
<meta-data <meta-data
android:name="com.trustlook.ApiKey" android:name="com.trustlook.ApiKey"
android:value="b8ade465f682b1ae8bcf942eb4e07aab435ee02a10196283b38daa66" /> <!-- 垃圾清理 --> android:value="86984b67c2db250b6a0dfd8923ac623c776c8af9ee520ba5d60e8799" />
<!-- 垃圾清理 -->
<meta-data <meta-data
android:name="com.trustlook.cleansdk.ApiKey" android:name="com.trustlook.cleansdk.ApiKey"
android:value="b8ade465f682b1ae8bcf942eb4e07aab435ee02a10196283b38daa66" /> android:value="86984b67c2db250b6a0dfd8923ac623c776c8af9ee520ba5d60e8799" />
</application> </application>
</manifest> </manifest>
\ No newline at end of file
package com.test.mydemo3.adapter
import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter
class HomeViewPagerAdapter() {
}
\ No newline at end of file
package com.test.mydemo3 package com.xm.test.myfilemaster
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
...@@ -14,12 +14,12 @@ import com.applovin.sdk.AppLovinMediationProvider ...@@ -14,12 +14,12 @@ import com.applovin.sdk.AppLovinMediationProvider
import com.applovin.sdk.AppLovinSdk import com.applovin.sdk.AppLovinSdk
import com.applovin.sdk.AppLovinSdkInitializationConfiguration import com.applovin.sdk.AppLovinSdkInitializationConfiguration
import com.kongzue.dialogx.DialogX import com.kongzue.dialogx.DialogX
import com.test.mydemo3.activity.HomeActivity import com.xm.test.myfilemaster.activity.HomeActivity
import com.test.mydemo3.util.UrlManager import com.xm.test.myfilemaster.util.UrlManager
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
class MainActivity : AppCompatActivity() , MaxAdListener { class MainActivity : AppCompatActivity(), MaxAdListener {
private lateinit var mProgressBar: ProgressBar private lateinit var mProgressBar: ProgressBar
private lateinit var interstitialAd: MaxInterstitialAd private lateinit var interstitialAd: MaxInterstitialAd
...@@ -45,15 +45,15 @@ class MainActivity : AppCompatActivity() , MaxAdListener { ...@@ -45,15 +45,15 @@ class MainActivity : AppCompatActivity() , MaxAdListener {
.build(); .build();
val handler = Handler() val handler = Handler()
var count: Int = 0 var count: Int = 0
val runnable = object : Runnable{ val runnable = object : Runnable {
override fun run() { override fun run() {
if (count <= 100){ if (count <= 100) {
runOnUiThread { runOnUiThread {
mProgressBar.setProgress(count) mProgressBar.setProgress(count)
count += 10 count += 10
} }
handler.postDelayed(this, 300) handler.postDelayed(this, 300)
}else{ } else {
startVi() startVi()
} }
} }
...@@ -63,7 +63,8 @@ class MainActivity : AppCompatActivity() , MaxAdListener { ...@@ -63,7 +63,8 @@ class MainActivity : AppCompatActivity() , MaxAdListener {
handler.postDelayed(runnable, 300) handler.postDelayed(runnable, 300)
} }
} }
fun startVi(){
fun startVi() {
startActivity(Intent(this, HomeActivity::class.java)) startActivity(Intent(this, HomeActivity::class.java))
finish() finish()
} }
......
package com.test.mydemo3 package com.xm.test.myfilemaster
import android.app.Application import android.app.Application
import android.content.Context import android.content.Context
import android.util.Log import android.util.Log
import androidx.lifecycle.Lifecycle import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent import androidx.lifecycle.OnLifecycleEvent
import androidx.lifecycle.ProcessLifecycleOwner import androidx.lifecycle.ProcessLifecycleOwner
import com.applovin.mediation.MaxAd import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdListener import com.applovin.mediation.MaxAdListener
import com.applovin.mediation.MaxError import com.applovin.mediation.MaxError
import com.applovin.mediation.ads.MaxAppOpenAd import com.applovin.mediation.ads.MaxAppOpenAd
import com.applovin.sdk.AppLovinSdk import com.applovin.sdk.AppLovinSdk
import com.applovin.sdk.AppLovinSdkConfiguration import com.cloud.cleanjunksdk.task.CheckSdkCallback
import com.cloud.cleanjunksdk.task.CheckSdkCallback import com.cloud.cleanjunksdk.task.Clean
import com.cloud.cleanjunksdk.task.Clean import com.cloud.cleanjunksdk.task.CleanSDK
import com.cloud.cleanjunksdk.task.CleanSDK import com.cloud.cleanjunksdk.tools.Region
import com.cloud.cleanjunksdk.tools.Region import com.trustlook.sdk.cloudscan.CloudScanClient
import com.test.mydemo3.util.UrlManager import com.xm.test.myfilemaster.util.UrlManager
import com.trustlook.sdk.cloudscan.CloudScanClient
class MyApplication : Application() {
class MyApplication : Application() { private lateinit var appOpenManager: ExampleAppOpenManager
private lateinit var appOpenManager: ExampleAppOpenManager
companion object {
companion object{ var mCleanSdk: Clean? = null
var mCleanSdk: Clean? = null var mCloudScan: CloudScanClient? = null
var mCloudScan: CloudScanClient? = null }
}
override fun onCreate() {
override fun onCreate() { super.onCreate()
super.onCreate()
// AppLovinSdk.getInstance( this ).initializeSdk({ configuration: AppLovinSdkConfiguration ->
// AppLovinSdk.getInstance( this ).initializeSdk({ configuration: AppLovinSdkConfiguration -> // {
// { // appOpenManager = ExampleAppOpenManager(applicationContext)
// appOpenManager = ExampleAppOpenManager(applicationContext) // }
// } // )
// ) // }
// } CleanSDK.init(this, this, Region.INTL, object : CheckSdkCallback {
CleanSDK.init(MyApplication(), this, Region.INTL, object : CheckSdkCallback { override fun onSuccess(p0: Clean?) {
override fun onSuccess(p0: Clean?) { mCleanSdk = p0!!
mCleanSdk = p0!! Log.e("yanglin", "onSuccess: clean INIT")
Log.e("yanglin", "onSuccess: clean INIT", ) }
}
override fun onError(error: Int) {
override fun onError(p0: Int) { Log.e("yanglin", "onError: INIT error=$error")
Log.e("yanglin", "onError: INIT", ) }
} })
}) mCloudScan = CloudScanClient.Builder(this)
mCloudScan = CloudScanClient.Builder(this) .setRegion(com.trustlook.sdk.data.Region.INTL)
.setRegion(com.trustlook.sdk.data.Region.INTL) .setConnectionTimeout(30000)
.setConnectionTimeout(30000) .setSocketTimeout(30000)
.setSocketTimeout(30000) .build()
.build() AppLovinSdk.getInstance(this).initializeSdk {
AppLovinSdk.getInstance(this).initializeSdk { appOpenManager = ExampleAppOpenManager(applicationContext)
appOpenManager = ExampleAppOpenManager(applicationContext) }
} }
}
class ExampleAppOpenManager(applicationContext: Context?) : LifecycleObserver, MaxAdListener {
class ExampleAppOpenManager(applicationContext: Context?) : LifecycleObserver, MaxAdListener { private lateinit var appOpenAd: MaxAppOpenAd
private lateinit var appOpenAd: MaxAppOpenAd private lateinit var context: Context
private lateinit var context: Context
init {
init { ProcessLifecycleOwner.get().lifecycle.addObserver(this)
ProcessLifecycleOwner.get().lifecycle.addObserver(this)
context = applicationContext!!
context = applicationContext!!
appOpenAd = MaxAppOpenAd(UrlManager.AD_UNIT_ID, applicationContext)
appOpenAd = MaxAppOpenAd(UrlManager.AD_UNIT_ID, applicationContext!!) appOpenAd.setListener(this)
appOpenAd.setListener(this) appOpenAd.loadAd()
appOpenAd.loadAd() }
}
private fun showAdIfReady() {
private fun showAdIfReady() { if (appOpenAd == null || !AppLovinSdk.getInstance(context).isInitialized) return
if (appOpenAd == null || !AppLovinSdk.getInstance(context).isInitialized) return
if (appOpenAd.isReady) {
if (appOpenAd.isReady) { appOpenAd.showAd(UrlManager.TEST_PLACEMENT_HERE)
appOpenAd.showAd(UrlManager.TEST_PLACEMENT_HERE) } else {
} else { appOpenAd.loadAd()
appOpenAd.loadAd() }
} }
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
@OnLifecycleEvent(Lifecycle.Event.ON_START) fun onStart() {
fun onStart() { showAdIfReady()
showAdIfReady() }
}
override fun onAdLoaded(ad: MaxAd) {}
override fun onAdLoaded(ad: MaxAd) {} override fun onAdLoadFailed(adUnitId: String, error: MaxError) {}
override fun onAdLoadFailed(adUnitId: String, error: MaxError) {} override fun onAdDisplayed(ad: MaxAd) {}
override fun onAdDisplayed(ad: MaxAd) {} override fun onAdClicked(ad: MaxAd) {}
override fun onAdClicked(ad: MaxAd) {}
override fun onAdHidden(ad: MaxAd) {
override fun onAdHidden(ad: MaxAd) { appOpenAd.loadAd()
appOpenAd.loadAd() }
}
override fun onAdDisplayFailed(ad: MaxAd, error: MaxError) {
override fun onAdDisplayFailed(ad: MaxAd, error: MaxError) { appOpenAd.loadAd()
appOpenAd.loadAd() }
} }
}
} }
\ No newline at end of file
package com.test.mydemo3.activity package com.xm.test.myfilemaster.activity
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
class BaseActivityViewModel : ViewModel() { class BaseActivityViewModel : ViewModel() {
// private var mSelectNumber = MutableLiveData<SelectNumber>() // private var mSelectNumber = MutableLiveData<SelectNumber>()
private val _myInt = MutableLiveData<Int>() private val _myInt = MutableLiveData<Int>()
val myInt: LiveData<Int> get() = _myInt val myInt: LiveData<Int> get() = _myInt
fun setNumber(number: Int){ fun setNumber(number: Int){
_myInt.value = number _myInt.value = number
} }
// fun getNumber() : LiveData<SelectNumber>{ // fun getNumber() : LiveData<SelectNumber>{
// return mSelectNumber // return mSelectNumber
// } // }
// //
// fun setNumber(number: Int){ // fun setNumber(number: Int){
// mSelectNumber.value = SelectNumber(number) // mSelectNumber.value = SelectNumber(number)
// } // }
} }
\ No newline at end of file
package com.test.mydemo3.activity package com.xm.test.myfilemaster.activity
import android.content.ContentResolver
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.BatteryManager import android.os.BatteryManager
...@@ -13,10 +12,10 @@ import android.view.View ...@@ -13,10 +12,10 @@ import android.view.View
import android.widget.ImageView import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.test.mydemo3.R import com.xm.test.myfilemaster.R
import com.test.mydemo3.util.BatteryUtil import com.xm.test.myfilemaster.util.BatteryUtil
import com.test.mydemo3.util.PermissionUtil import com.xm.test.myfilemaster.util.PermissionUtil
import com.test.mydemo3.util.SystemServerState import com.xm.test.myfilemaster.util.SystemServerState
import java.util.Calendar import java.util.Calendar
import java.util.Date import java.util.Date
......
package com.test.mydemo3.activity package com.xm.test.myfilemaster.activity
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
...@@ -8,7 +8,6 @@ import android.os.Looper ...@@ -8,7 +8,6 @@ import android.os.Looper
import android.util.Log import android.util.Log
import android.view.View import android.view.View
import android.widget.ImageView import android.widget.ImageView
import android.widget.ListView
import android.widget.ProgressBar import android.widget.ProgressBar
import android.widget.TextView import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
...@@ -23,14 +22,14 @@ import com.cloud.cleanjunksdk.residual.ResidualBean ...@@ -23,14 +22,14 @@ import com.cloud.cleanjunksdk.residual.ResidualBean
import com.cloud.cleanjunksdk.task.JunkScanCallback import com.cloud.cleanjunksdk.task.JunkScanCallback
import com.cm.plugincluster.junkengine.junk.bean.MediaFile import com.cm.plugincluster.junkengine.junk.bean.MediaFile
import com.cm.plugincluster.junkengine.junk.engine.MEDIA_TYPE import com.cm.plugincluster.junkengine.junk.engine.MEDIA_TYPE
import com.test.mydemo3.MyApplication import com.xm.test.myfilemaster.MyApplication
import com.test.mydemo3.R import com.xm.test.myfilemaster.R
import com.test.mydemo3.adapter.CleanAdapter import com.xm.test.myfilemaster.adapter.CleanAdapter
import com.test.mydemo3.adapter.CleanAdapter2 import com.xm.test.myfilemaster.adapter.CleanAdapter2
import com.test.mydemo3.antivirus.AntivirusActivity import com.xm.test.myfilemaster.antivirus.AntivirusActivity
import com.test.mydemo3.model.CleanBean import com.xm.test.myfilemaster.model.CleanBean
import com.test.mydemo3.model.FileBean import com.xm.test.myfilemaster.model.FileBean
import com.test.mydemo3.util.FileUtil import com.xm.test.myfilemaster.util.FileUtil
import java.io.File import java.io.File
class CleanActivity : AppCompatActivity() { class CleanActivity : AppCompatActivity() {
......
package com.test.mydemo3.activity package com.xm.test.myfilemaster.activity
import android.os.Bundle import android.os.Bundle
import com.kongzue.dialogx.dialogs.WaitDialog import com.kongzue.dialogx.dialogs.WaitDialog
import com.test.mydemo3.R import com.xm.test.myfilemaster.R
import com.test.mydemo3.base.BaseActivity import com.xm.test.myfilemaster.base.BaseActivity
import com.test.mydemo3.model.FileBean import com.xm.test.myfilemaster.model.FileBean
import com.test.mydemo3.util.FileUtil import com.xm.test.myfilemaster.util.FileUtil
class FileManagerActivity : BaseActivity() { class FileManagerActivity : BaseActivity() {
private var mFileBeanList = ArrayList<FileBean>() private var mFileBeanList = ArrayList<FileBean>()
......
package com.test.mydemo3.activity package com.xm.test.myfilemaster.activity
import android.Manifest import android.Manifest
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.os.Environment
import android.provider.MediaStore.Audio.Radio
import android.provider.Settings
import android.view.View import android.view.View
import android.widget.RadioButton import android.widget.RadioButton
import android.widget.RadioGroup import android.widget.RadioGroup
import android.widget.Toast
import androidx.activity.enableEdgeToEdge import androidx.activity.enableEdgeToEdge
import androidx.annotation.IdRes
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import androidx.core.view.get
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.viewpager.widget.ViewPager
import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2 import androidx.viewpager2.widget.ViewPager2
import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
import com.permissionx.guolindev.PermissionX import com.permissionx.guolindev.PermissionX
import com.permissionx.guolindev.callback.RequestCallback import com.permissionx.guolindev.callback.RequestCallback
import com.test.mydemo3.R import com.xm.test.myfilemaster.R
import com.test.mydemo3.fragment.FileManagerFragment import com.xm.test.myfilemaster.fragment.FileManagerFragment
import com.test.mydemo3.fragment.HomeFragment import com.xm.test.myfilemaster.fragment.HomeFragment
import com.test.mydemo3.fragment.InternalStorageFragment import com.xm.test.myfilemaster.fragment.InternalStorageFragment
import com.test.mydemo3.util.PermissionUtil import com.xm.test.myfilemaster.util.PermissionUtil
import java.security.Permission
import javax.security.auth.callback.Callback
class HomeActivity : AppCompatActivity() { class HomeActivity : AppCompatActivity() {
private val REQUEST_MANAGE_EXTERNAL_STORAGE_PERMISSION = 101 private val REQUEST_MANAGE_EXTERNAL_STORAGE_PERMISSION = 101
......
package com.test.mydemo3.activity package com.xm.test.myfilemaster.activity
import android.Manifest
import android.content.Context
import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.os.Environment import android.os.Environment
import android.util.Log
import android.util.SparseBooleanArray
import android.widget.ListView import android.widget.ListView
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat
import com.kongzue.dialogx.dialogs.WaitDialog import com.kongzue.dialogx.dialogs.WaitDialog
import com.test.mydemo3.R import com.xm.test.myfilemaster.R
import com.test.mydemo3.base.BaseActivity import com.xm.test.myfilemaster.base.BaseActivity
import com.test.mydemo3.model.FileBean import com.xm.test.myfilemaster.model.FileBean
import com.test.mydemo3.model.FilesItemBean import com.xm.test.myfilemaster.util.FileUtil
import com.test.mydemo3.util.FileUtil import com.xm.test.myfilemaster.util.PermissionUtil
import com.test.mydemo3.util.PermissionUtil
import java.io.File
class InternalStorageActivity : BaseActivity() { class InternalStorageActivity : BaseActivity() {
private lateinit var mFilesItemListView: ListView private lateinit var mFilesItemListView: ListView
......
package com.test.mydemo3.activity package com.xm.test.myfilemaster.activity
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.os.Bundle import android.os.Bundle
...@@ -7,15 +7,14 @@ import android.view.View ...@@ -7,15 +7,14 @@ import android.view.View
import android.widget.CheckBox import android.widget.CheckBox
import android.widget.GridView import android.widget.GridView
import android.widget.ImageView import android.widget.ImageView
import android.widget.ScrollView
import android.widget.TextView import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.kongzue.dialogx.dialogs.WaitDialog import com.kongzue.dialogx.dialogs.WaitDialog
import com.test.mydemo3.R import com.xm.test.myfilemaster.R
import com.test.mydemo3.adapter.MediaAdapter import com.xm.test.myfilemaster.adapter.MediaAdapter
import com.test.mydemo3.model.FileBean import com.xm.test.myfilemaster.model.FileBean
import com.test.mydemo3.util.FileUtil import com.xm.test.myfilemaster.util.FileUtil
class MediaActivity : AppCompatActivity() { class MediaActivity : AppCompatActivity() {
private lateinit var mGridView: GridView private lateinit var mGridView: GridView
......
package com.test.mydemo3.activity package com.xm.test.myfilemaster.activity
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.util.SparseBooleanArray import android.util.SparseBooleanArray
import android.view.View import android.view.View
import android.widget.LinearLayout
import android.widget.ListView import android.widget.ListView
import android.widget.TextView import android.widget.TextView
import android.widget.Toast import android.widget.Toast
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.isVisible import androidx.core.view.isVisible
import com.test.mydemo3.R import com.xm.test.myfilemaster.R
import com.test.mydemo3.adapter.FilesItemViewAdapter import com.xm.test.myfilemaster.adapter.FilesItemViewAdapter
import com.test.mydemo3.base.BaseActivity import com.xm.test.myfilemaster.fragment.InternalStorageFragment
import com.test.mydemo3.fragment.InternalStorageFragment import com.xm.test.myfilemaster.model.FileBean
import com.test.mydemo3.model.FileBean import com.xm.test.myfilemaster.util.FileUtil
import com.test.mydemo3.util.FileUtil
class MoveOrCopyActivity : ComponentActivity() { class MoveOrCopyActivity : ComponentActivity() {
......
package com.test.mydemo3.activity package com.xm.test.myfilemaster.activity
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.util.SparseBooleanArray
import android.view.View
import android.widget.ListView import android.widget.ListView
import com.kongzue.dialogx.dialogs.WaitDialog import com.kongzue.dialogx.dialogs.WaitDialog
import com.test.mydemo3.R import com.xm.test.myfilemaster.R
import com.test.mydemo3.adapter.FilesItemViewAdapter import com.xm.test.myfilemaster.base.BaseActivity
import com.test.mydemo3.base.BaseActivity import com.xm.test.myfilemaster.model.FileBean
import com.test.mydemo3.model.FileBean import com.xm.test.myfilemaster.util.FileUtil
import com.test.mydemo3.model.FilesItemBean
import com.test.mydemo3.util.FileUtil
class ScanEmptyFilesActivity : BaseActivity() { class ScanEmptyFilesActivity : BaseActivity() {
......
package com.test.mydemo3.activity package com.xm.test.myfilemaster.activity
import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.provider.MediaStore
import android.util.Log
import android.util.SparseBooleanArray
import android.view.View
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.ListView import android.widget.ListView
import android.widget.Toast
import com.airbnb.lottie.utils.Utils
import com.kongzue.dialogx.dialogs.WaitDialog import com.kongzue.dialogx.dialogs.WaitDialog
import com.test.mydemo3.R import com.xm.test.myfilemaster.R
import com.test.mydemo3.base.BaseActivity import com.xm.test.myfilemaster.base.BaseActivity
import com.test.mydemo3.model.FileBean import com.xm.test.myfilemaster.model.FileBean
import com.test.mydemo3.model.FilesItemBean import com.xm.test.myfilemaster.util.FileUtil
import com.test.mydemo3.util.FileUtil
import java.io.File
class ScanLargeFilesActivity : BaseActivity() { class ScanLargeFilesActivity : BaseActivity() {
......
package com.test.mydemo3.activity package com.xm.test.myfilemaster.activity
import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.widget.ImageView import android.widget.ImageView
import android.widget.ListView import android.widget.ListView
import android.widget.TextView import android.widget.TextView
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.isVisible import androidx.core.view.isVisible
import com.test.mydemo3.R
import com.test.mydemo3.adapter.ScanResultAdapter
import com.test.mydemo3.view.CustomDialog
import com.trustlook.sdk.data.AppInfo import com.trustlook.sdk.data.AppInfo
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.adapter.ScanResultAdapter
import com.xm.test.myfilemaster.view.CustomDialog
class ScanResultActivity : AppCompatActivity() { class ScanResultActivity : AppCompatActivity() {
......
package com.test.mydemo3.activity package com.xm.test.myfilemaster.activity
import android.os.Bundle import android.os.Bundle
import android.util.Log import android.util.Log
...@@ -14,14 +14,14 @@ import androidx.lifecycle.Observer ...@@ -14,14 +14,14 @@ import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.cloud.cleanjunksdk.similar.PicSimilarInfo import com.cloud.cleanjunksdk.similar.PicSimilarInfo
import com.cloud.cleanjunksdk.task.JunkScanCallback
import com.cloud.cleanjunksdk.task.SimilarScanCallBack import com.cloud.cleanjunksdk.task.SimilarScanCallBack
import com.test.mydemo3.MyApplication import com.xm.test.myfilemaster.MyApplication
import com.test.mydemo3.R import com.xm.test.myfilemaster.R
import com.test.mydemo3.adapter.ImageItemAdapter import com.xm.test.myfilemaster.adapter.ImageItemAdapter
import com.test.mydemo3.adapter.SimilarBeanAdapter import com.xm.test.myfilemaster.adapter.SimilarBeanAdapter
import com.test.mydemo3.base.BaseActivity import com.xm.test.myfilemaster.base.BaseActivity
import com.test.mydemo3.model.FileBean import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.view.CustomDialog
import java.io.File import java.io.File
class SimilarImagesActivity : AppCompatActivity(), OnClickListener{ class SimilarImagesActivity : AppCompatActivity(), OnClickListener{
...@@ -175,7 +175,7 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener{ ...@@ -175,7 +175,7 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener{
isClickEditBtn = true isClickEditBtn = true
} }
R.id.btn_delete ->{ R.id.btn_delete ->{
val customDialog = com.test.mydemo3.view.CustomDialog(this) val customDialog = CustomDialog(this)
customDialog.setsCancel(View.OnClickListener { customDialog.setsCancel(View.OnClickListener {
customDialog.dismiss() customDialog.dismiss()
}).setsConfirm(View.OnClickListener { }).setsConfirm(View.OnClickListener {
......
package com.test.mydemo3.adapter package com.xm.test.myfilemaster.adapter
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.test.mydemo3.R import com.xm.test.myfilemaster.R
import com.test.mydemo3.databinding.CleanListItemLayoutBinding import com.xm.test.myfilemaster.databinding.CleanListItemLayoutBinding
import com.test.mydemo3.databinding.FilesItemLayoutBinding import com.xm.test.myfilemaster.databinding.FilesItemLayoutBinding
import com.test.mydemo3.model.CleanBean import com.xm.test.myfilemaster.model.CleanBean
import com.test.mydemo3.model.FileBean import com.xm.test.myfilemaster.model.FileBean
class CleanAdapter2 : RecyclerView.Adapter<CleanAdapter2.AAA>() { class CleanAdapter2 : RecyclerView.Adapter<CleanAdapter2.AAA>() {
......
//package com.test.mydemo3.adapter //package com.test.mydemo3.adapter
// //
//import android.view.View //import android.view.View
//import android.view.ViewGroup //import android.view.ViewGroup
//import androidx.recyclerview.widget.RecyclerView //import androidx.recyclerview.widget.RecyclerView
//import androidx.recyclerview.widget.RecyclerView.ViewHolder //import androidx.recyclerview.widget.RecyclerView.ViewHolder
//import com.test.mydemo3.model.FileBean //import com.test.mydemo3.model.FileBean
// //
//class FileSimilarAdapter<T : ViewHolder?>() : RecyclerView.Adapter<T>(){ //class FileSimilarAdapter<T : ViewHolder?>() : RecyclerView.Adapter<T>(){
// //
// val fileList = arrayListOf<FileBean>() // val fileList = arrayListOf<FileBean>()
// private var firstRefresh = true // private var firstRefresh = true
// //
// fun setData(data: List<FileBean>) { // fun setData(data: List<FileBean>) {
// fileList.clear() // fileList.clear()
// fileList.addAll(data) // fileList.addAll(data)
//// notifyDataSetChanged() //// notifyDataSetChanged()
// } // }
// //
// fun addData(data: List<FileBean>) { // fun addData(data: List<FileBean>) {
// fileList.addAll(data) // fileList.addAll(data)
//// notifyDataSetChanged() //// notifyDataSetChanged()
// } // }
// //
// //
// fun clearData() { // fun clearData() {
// if (fileList.size == 0) return // if (fileList.size == 0) return
// fileList.clear() // fileList.clear()
//// notifyDataSetChanged() //// notifyDataSetChanged()
// } // }
// //
//// @SuppressLint("NotifyDataSetChanged") //// @SuppressLint("NotifyDataSetChanged")
// fun removeData(data: List<FileBean>) { // fun removeData(data: List<FileBean>) {
// data.forEach { // data.forEach {
// val index = fileList.indexOf(it) // val index = fileList.indexOf(it)
// if (index != -1) { // if (index != -1) {
// fileList.removeAt(index) // fileList.removeAt(index)
//// notifyItemRemoved(index) //// notifyItemRemoved(index)
// } // }
// } // }
// } // }
// //
//// override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): T & Any { //// override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): T & Any {
//// ////
//// ////
//// } //// }
// //
// override fun getItemCount(): Int { // override fun getItemCount(): Int {
// return fileList.size // return fileList.size
// } // }
// //
// override fun onBindViewHolder(holder: T & Any, position: Int) { // override fun onBindViewHolder(holder: T & Any, position: Int) {
// return // return
// } // }
// //
// //
//} //}
\ No newline at end of file
package com.test.mydemo3.adapter package com.xm.test.myfilemaster.adapter
import android.content.Context import android.content.Context
import android.graphics.BitmapFactory import android.util.SparseBooleanArray
import android.graphics.drawable.BitmapDrawable import android.view.LayoutInflater
import android.os.Looper import android.view.View
import android.util.SparseBooleanArray import android.view.ViewGroup
import android.view.LayoutInflater import android.widget.BaseAdapter
import android.view.View import android.widget.CheckBox
import android.view.ViewGroup import android.widget.ImageView
import android.widget.BaseAdapter import com.xm.test.myfilemaster.R
import android.widget.CheckBox import com.xm.test.myfilemaster.activity.MediaActivity
import android.widget.ImageView import com.xm.test.myfilemaster.model.FileBean
import com.bumptech.glide.Glide import com.xm.test.myfilemaster.util.FileUtil
import com.test.mydemo3.R
import com.test.mydemo3.activity.MediaActivity class MediaAdapter(
import com.test.mydemo3.model.FileBean mListData: ArrayList<FileBean>,
import com.test.mydemo3.util.FileUtil mContext: Context,
import com.test.mydemo3.util.MediaUtil mStateCheckedMap: SparseBooleanArray,
import java.util.logging.Handler fileType: String,
mItemHeight: Int
class MediaAdapter( ): BaseAdapter() {
mListData: ArrayList<FileBean>,
mContext: Context, private var mListData: ArrayList<FileBean>
mStateCheckedMap: SparseBooleanArray, private var mContext: Context
fileType: String, private var mInflater: LayoutInflater
mItemHeight: Int private var mStateCheckedMap: SparseBooleanArray
): BaseAdapter() { private var mFileType: String
private var mItemHeight: Int = 0
private var mListData: ArrayList<FileBean> private var dpToPx = 0
private var mContext: Context init {
private var mInflater: LayoutInflater this.mListData = mListData
private var mStateCheckedMap: SparseBooleanArray this.mContext = mContext
private var mFileType: String this.mStateCheckedMap = mStateCheckedMap
private var mItemHeight: Int = 0 this.mInflater = LayoutInflater.from(mContext)
private var dpToPx = 0 this.mFileType = fileType
init { this.mItemHeight =mItemHeight
this.mListData = mListData this.dpToPx = FileUtil.dpToPx(mItemHeight, mContext)
this.mContext = mContext }
this.mStateCheckedMap = mStateCheckedMap override fun getCount(): Int {
this.mInflater = LayoutInflater.from(mContext)
this.mFileType = fileType return mListData.size
this.mItemHeight =mItemHeight }
this.dpToPx = FileUtil.dpToPx(mItemHeight, mContext)
} override fun getItem(position: Int): Any {
override fun getCount(): Int { return mListData[position]
}
return mListData.size
} override fun getItemId(position: Int): Long {
return position.toLong()
override fun getItem(position: Int): Any { }
return mListData[position]
} override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
var mViewHolder: ViewHolder
override fun getItemId(position: Int): Long { var view:View? = convertView
return position.toLong() if (view != null){
} mViewHolder = view.tag as ViewHolder
}else{
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { mViewHolder = ViewHolder()
var mViewHolder: ViewHolder view = mInflater.inflate(R.layout.item_layout,null)
var view:View? = convertView
if (view != null){ mViewHolder.image = view.findViewById(R.id.item_image)
mViewHolder = view.tag as ViewHolder mViewHolder.checkedBox = view.findViewById(R.id.check_item_image_switch)
}else{ view.tag = mViewHolder
mViewHolder = ViewHolder() }
view = mInflater.inflate(R.layout.item_layout,null)
if (mFileType.equals("image")){
mViewHolder.image = view.findViewById(R.id.item_image)
mViewHolder.checkedBox = view.findViewById(R.id.check_item_image_switch) mViewHolder.image.setImageDrawable(mListData[position].drawable)
view.tag = mViewHolder mViewHolder.image.layoutParams.height = dpToPx
}
}else{
if (mFileType.equals("image")){ mViewHolder.image.setImageResource(R.drawable.ic_video)
mViewHolder.image.layoutParams.height = dpToPx
mViewHolder.image.setImageDrawable(mListData[position].drawable) }
mViewHolder.image.layoutParams.height = dpToPx
mViewHolder.checkedBox.visibility = if (MediaActivity.isClickEditBtn) View.VISIBLE else View.GONE
}else{
mViewHolder.image.setImageResource(R.drawable.ic_video) mViewHolder.checkedBox.isChecked = mStateCheckedMap[position]
mViewHolder.image.layoutParams.height = dpToPx
} return view!!
}
mViewHolder.checkedBox.visibility = if (MediaActivity.isClickEditBtn) View.VISIBLE else View.GONE fun setItemHeight(height: Int){
this.mItemHeight = height
mViewHolder.checkedBox.isChecked = mStateCheckedMap[position] }
fun setData(data: ArrayList<FileBean>) {
return view!! this.mListData = data
} this.notifyDataSetChanged()
fun setItemHeight(height: Int){ }
this.mItemHeight = height
} class ViewHolder{
fun setData(data: ArrayList<FileBean>) { lateinit var image: ImageView
this.mListData = data lateinit var checkedBox: CheckBox
this.notifyDataSetChanged() }
}
class ViewHolder{
lateinit var image: ImageView
lateinit var checkedBox: CheckBox
}
} }
\ No newline at end of file
package com.test.mydemo3.adapter package com.xm.test.myfilemaster.adapter
import android.content.Context import android.content.Context
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.BaseAdapter import android.widget.BaseAdapter
import android.widget.ImageView import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import com.test.mydemo3.R import com.trustlook.sdk.data.AppInfo
import com.trustlook.sdk.data.AppInfo import com.xm.test.myfilemaster.R
class ScanResultAdapter(dataList: ArrayList<AppInfo>, class ScanResultAdapter(dataList: ArrayList<AppInfo>,
context: Context) : BaseAdapter() { context: Context) : BaseAdapter() {
private var dataList: ArrayList<AppInfo> private var dataList: ArrayList<AppInfo>
private var inflater: LayoutInflater private var inflater: LayoutInflater
private var context: Context private var context: Context
init { init {
this.dataList = dataList this.dataList = dataList
this.context = context this.context = context
this.inflater = LayoutInflater.from(context) this.inflater = LayoutInflater.from(context)
} }
override fun getCount(): Int { override fun getCount(): Int {
return dataList.size return dataList.size
} }
override fun getItem(position: Int): Any { override fun getItem(position: Int): Any {
return dataList[position] return dataList[position]
} }
override fun getItemId(position: Int): Long { override fun getItemId(position: Int): Long {
return position.toLong() return position.toLong()
} }
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
var view: View var view: View
var viewHolder : ScanResultViewHolder var viewHolder : ScanResultViewHolder
if (convertView != null){ if (convertView != null){
view = convertView view = convertView
viewHolder = view.tag as ScanResultViewHolder viewHolder = view.tag as ScanResultViewHolder
}else{ }else{
viewHolder = ScanResultViewHolder() viewHolder = ScanResultViewHolder()
view = inflater.inflate(R.layout.scan_result_list_item_layout, null) view = inflater.inflate(R.layout.scan_result_list_item_layout, null)
viewHolder.appIcon = view.findViewById(R.id.scan_app_icon) viewHolder.appIcon = view.findViewById(R.id.scan_app_icon)
viewHolder.appName = view.findViewById(R.id.scan_app_name) viewHolder.appName = view.findViewById(R.id.scan_app_name)
viewHolder.appHint = view.findViewById(R.id.scan_app_hint) viewHolder.appHint = view.findViewById(R.id.scan_app_hint)
view.tag = viewHolder view.tag = viewHolder
} }
viewHolder.appIcon viewHolder.appIcon
viewHolder.appName.text = dataList[position].appName viewHolder.appName.text = dataList[position].appName
viewHolder.appHint.text = dataList[position].virusName viewHolder.appHint.text = dataList[position].virusName
return view return view
} }
class ScanResultViewHolder{ class ScanResultViewHolder{
lateinit var appIcon: ImageView lateinit var appIcon: ImageView
lateinit var appName: TextView lateinit var appName: TextView
lateinit var appHint: TextView lateinit var appHint: TextView
} }
} }
\ No newline at end of file
package com.test.mydemo3.adapter package com.xm.test.myfilemaster.adapter
import android.content.Context import android.content.Context
import android.util.Log import android.util.Log
import android.util.SparseBooleanArray import android.util.SparseBooleanArray
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.GridView import android.widget.GridView
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.cloud.cleanjunksdk.similar.PicInfo import com.cloud.cleanjunksdk.similar.PicInfo
import com.cloud.cleanjunksdk.similar.PicSimilarInfo import com.cloud.cleanjunksdk.similar.PicSimilarInfo
import com.test.mydemo3.R import com.xm.test.myfilemaster.R
import com.test.mydemo3.activity.SimilarImagesActivity import com.xm.test.myfilemaster.activity.SimilarImagesActivity
import com.test.mydemo3.databinding.ImageItemLayoutBinding import com.xm.test.myfilemaster.databinding.ImageItemLayoutBinding
import com.test.mydemo3.util.FileUtil import com.xm.test.myfilemaster.util.FileUtil
class SimilarBeanAdapter(context: Context) : RecyclerView.Adapter<SimilarBeanAdapter.AA>() { class SimilarBeanAdapter(context: Context) : RecyclerView.Adapter<SimilarBeanAdapter.AA>() {
private val list = arrayListOf<PicSimilarInfo>() private val list = arrayListOf<PicSimilarInfo>()
private var context: Context private var context: Context
var mCheckedLists: MutableList<PicInfo> = mutableListOf<PicInfo>() var mCheckedLists: MutableList<PicInfo> = mutableListOf<PicInfo>()
private var mItemCheckedArray = ArrayList<SparseBooleanArray>() private var mItemCheckedArray = ArrayList<SparseBooleanArray>()
val mGridAdapters = ArrayList<SimilarGridAdapter>() val mGridAdapters = ArrayList<SimilarGridAdapter>()
val holders = ArrayList<AA>() val holders = ArrayList<AA>()
init { init {
this.context = context this.context = context
} }
fun Int.inflate(parent: ViewGroup, attachToRoot: Boolean = false): View { fun Int.inflate(parent: ViewGroup, attachToRoot: Boolean = false): View {
return LayoutInflater.from(parent.context).inflate(this, parent, attachToRoot) return LayoutInflater.from(parent.context).inflate(this, parent, attachToRoot)
} }
class AA(view: View) : RecyclerView.ViewHolder(view) { class AA(view: View) : RecyclerView.ViewHolder(view) {
val binding = ImageItemLayoutBinding.bind(view) val binding = ImageItemLayoutBinding.bind(view)
} }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AA { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AA {
val root = R.layout.image_item_layout.inflate(parent) val root = R.layout.image_item_layout.inflate(parent)
return AA(root) return AA(root)
} }
override fun getItemCount(): Int { override fun getItemCount(): Int {
return list.size return list.size
} }
override fun onBindViewHolder(holder: AA, position: Int) { override fun onBindViewHolder(holder: AA, position: Int) {
holders.add(holder) holders.add(holder)
if (mItemCheckedArray.size != list.size){ if (mItemCheckedArray.size != list.size){
mItemCheckedArray.add(SparseBooleanArray()) mItemCheckedArray.add(SparseBooleanArray())
// itemAdapter.add(ItemAdapter(mDataList[position], mContext, mItemCheckedArray[position], position)) // itemAdapter.add(ItemAdapter(mDataList[position], mContext, mItemCheckedArray[position], position))
} }
mGridAdapters.add(SimilarGridAdapter(list[position].getmList(), context, mItemCheckedArray[position], position)) mGridAdapters.add(SimilarGridAdapter(list[position].getmList(), context, mItemCheckedArray[position], position))
// val data = list[position] // val data = list[position]
holder.binding.similarImageNumText.text = holder.binding.similarImageNumText.text =
String.format(context.getString(R.string.similar, list[position].getmList().size.toString())) String.format(context.getString(R.string.similar, list[position].getmList().size.toString()))
val layoutParams = holder.binding.imageItemGrid.layoutParams val layoutParams = holder.binding.imageItemGrid.layoutParams
if (list[position].getmList().size.toFloat() / 4.0 == 1.0){ if (list[position].getmList().size.toFloat() / 4.0 == 1.0){
layoutParams.height = FileUtil.dpToPx(83*(list[position].getmList().size / 4), context) layoutParams.height = FileUtil.dpToPx(83*(list[position].getmList().size / 4), context)
}else{ }else{
layoutParams.height = FileUtil.dpToPx(83*(list[position].getmList().size / 4 + 1 ), context) layoutParams.height = FileUtil.dpToPx(83*(list[position].getmList().size / 4 + 1 ), context)
} }
holder.binding.imageItemGrid.setOnItemClickListener { parent, view, itemPosition, id -> holder.binding.imageItemGrid.setOnItemClickListener { parent, view, itemPosition, id ->
if (SimilarImagesActivity.isClickEditBtn){ if (SimilarImagesActivity.isClickEditBtn){
println("yanglin positioin $position itemPostion $itemPosition") println("yanglin positioin $position itemPostion $itemPosition")
updateCheckBoxStatus(position, view, itemPosition, holder.binding.imageItemGrid, list[position].getmList()) updateCheckBoxStatus(position, view, itemPosition, holder.binding.imageItemGrid, list[position].getmList())
} }
} }
holder.binding.imageItemGrid.adapter = mGridAdapters[position] holder.binding.imageItemGrid.adapter = mGridAdapters[position]
} }
fun updateCheckBoxStatus(position: Int, view: View, itemPosition: Int, lv: GridView, fileBeanList: MutableList<PicInfo>){ fun updateCheckBoxStatus(position: Int, view: View, itemPosition: Int, lv: GridView, fileBeanList: MutableList<PicInfo>){
val viewHolder = view.tag as ImageItemAdapter.ItemAdapter.ViewHolder val viewHolder = view.tag as ImageItemAdapter.ItemAdapter.ViewHolder
viewHolder.checkBox.toggle() viewHolder.checkBox.toggle()
lv.setItemChecked(itemPosition, viewHolder.checkBox.isChecked) lv.setItemChecked(itemPosition, viewHolder.checkBox.isChecked)
mItemCheckedArray[position].put(itemPosition, viewHolder.checkBox.isChecked) mItemCheckedArray[position].put(itemPosition, viewHolder.checkBox.isChecked)
if (viewHolder.checkBox.isChecked){ if (viewHolder.checkBox.isChecked){
mCheckedLists.add(fileBeanList[itemPosition]) mCheckedLists.add(fileBeanList[itemPosition])
}else{ }else{
mCheckedLists.remove(fileBeanList[itemPosition]) mCheckedLists.remove(fileBeanList[itemPosition])
} }
mGridAdapters[position].notifyDataSetChanged() mGridAdapters[position].notifyDataSetChanged()
} }
fun setData(data: List<PicSimilarInfo>) { fun setData(data: List<PicSimilarInfo>) {
list.clear() list.clear()
list.addAll(data) list.addAll(data)
notifyDataSetChanged() notifyDataSetChanged()
} }
fun selectAll(isChecked: Boolean){ fun selectAll(isChecked: Boolean){
Log.e("yanglin", "selectAll: $isChecked", ) Log.e("yanglin", "selectAll: $isChecked", )
mCheckedLists.clear() mCheckedLists.clear()
if (!isChecked){ if (!isChecked){
for (i in 0..< list.size){ for (i in 0..< list.size){
mItemCheckedArray[i].clear() mItemCheckedArray[i].clear()
} }
}else{ }else{
for (i in 0..< list.size){ for (i in 0..< list.size){
mCheckedLists.clear() mCheckedLists.clear()
setStateCheckedMap(i, isChecked) setStateCheckedMap(i, isChecked)
mCheckedLists.addAll(list[i].getmList()) mCheckedLists.addAll(list[i].getmList())
mGridAdapters[i].notifyDataSetChanged() mGridAdapters[i].notifyDataSetChanged()
} }
} }
} }
fun setStateCheckedMap(position: Int, isChecked: Boolean){ fun setStateCheckedMap(position: Int, isChecked: Boolean){
for(i in list[position].getmList().indices){ for(i in list[position].getmList().indices){
mItemCheckedArray[position].put(i, isChecked) mItemCheckedArray[position].put(i, isChecked)
holders[position].binding.imageItemGrid.setItemChecked(i, isChecked) holders[position].binding.imageItemGrid.setItemChecked(i, isChecked)
} }
} }
} }
\ No newline at end of file
package com.test.mydemo3.adapter package com.xm.test.myfilemaster.adapter
import android.content.Context import android.content.Context
import android.graphics.BitmapFactory import android.graphics.BitmapFactory
import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.BitmapDrawable
import android.util.SparseBooleanArray import android.util.SparseBooleanArray
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.BaseAdapter import android.widget.BaseAdapter
import android.widget.CheckBox import android.widget.CheckBox
import android.widget.ImageView import android.widget.ImageView
import com.cloud.cleanjunksdk.similar.PicInfo import com.cloud.cleanjunksdk.similar.PicInfo
import com.cloud.cleanjunksdk.similar.PicSimilarInfo import com.xm.test.myfilemaster.R
import com.test.mydemo3.R import com.xm.test.myfilemaster.activity.SimilarImagesActivity
import com.test.mydemo3.activity.SimilarImagesActivity import com.xm.test.myfilemaster.util.FileUtil
import com.test.mydemo3.util.FileUtil
class SimilarGridAdapter(
class SimilarGridAdapter( list: MutableList<PicInfo>, context: Context,
list: MutableList<PicInfo>, context: Context, mStateCheckedMap: SparseBooleanArray, mPosition: Int): BaseAdapter(){
mStateCheckedMap: SparseBooleanArray, mPosition: Int): BaseAdapter(){
private var context: Context
private var context: Context private var dataList: MutableList<PicInfo>
private var dataList: MutableList<PicInfo> private var stateCheckedMap: SparseBooleanArray
private var stateCheckedMap: SparseBooleanArray private var inflater: LayoutInflater
private var inflater: LayoutInflater private var mPosition: Int
private var mPosition: Int init {
init { this.context = context
this.context = context this.dataList = list
this.dataList = list this.stateCheckedMap = mStateCheckedMap
this.stateCheckedMap = mStateCheckedMap this.inflater = LayoutInflater.from(context)
this.inflater = LayoutInflater.from(context) this.mPosition = mPosition
this.mPosition = mPosition }
}
override fun getCount(): Int {
override fun getCount(): Int { return dataList.size
return dataList.size }
}
override fun getItem(position: Int): Any {
override fun getItem(position: Int): Any { return dataList[position]
return dataList[position] }
}
override fun getItemId(position: Int): Long {
override fun getItemId(position: Int): Long { return position.toLong()
return position.toLong() }
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { var view = convertView
var view = convertView val itemHolder: ViewHolder
val itemHolder: ViewHolder if (convertView != null){
if (convertView != null){ itemHolder = view?.tag as ViewHolder
itemHolder = view?.tag as ViewHolder }else{
}else{ view = inflater.inflate(R.layout.item_layout, null)
view = inflater.inflate(R.layout.item_layout, null) itemHolder = ViewHolder()
itemHolder = ViewHolder() itemHolder.imageView = view.findViewById(R.id.item_image)
itemHolder.imageView = view.findViewById(R.id.item_image) itemHolder.checkBox = view.findViewById(R.id.check_item_image_switch)
itemHolder.checkBox = view.findViewById(R.id.check_item_image_switch) view.tag = itemHolder
view.tag = itemHolder }
} // BitmapDrawable(context.resources, BitmapFactory.decodeFile(dataList[position].filePath))
// BitmapDrawable(context.resources, BitmapFactory.decodeFile(dataList[position].filePath)) itemHolder.checkBox.visibility = if (SimilarImagesActivity.isClickEditBtn) View.VISIBLE else View.GONE
itemHolder.checkBox.visibility = if (SimilarImagesActivity.isClickEditBtn) View.VISIBLE else View.GONE itemHolder.imageView.setImageDrawable(BitmapDrawable(context.resources, BitmapFactory.decodeFile(dataList[position].path)))
itemHolder.imageView.setImageDrawable(BitmapDrawable(context.resources, BitmapFactory.decodeFile(dataList[position].path))) itemHolder.imageView.layoutParams.height = FileUtil.dpToPx(83, context)
itemHolder.imageView.layoutParams.height = FileUtil.dpToPx(83, context)
// if (DuplicateImagesActivity.isClickCheckBoxAllBtn){
// if (DuplicateImagesActivity.isClickCheckBoxAllBtn){ // itemHolder.checkBox.isChecked = true
// itemHolder.checkBox.isChecked = true // }else{
// }else{ itemHolder.checkBox.isChecked = stateCheckedMap[position]
itemHolder.checkBox.isChecked = stateCheckedMap[position] // }
// }
return view!!
return view!!
}
}
fun setData(datas: MutableList<PicInfo>){
fun setData(datas: MutableList<PicInfo>){ this.dataList = datas
this.dataList = datas }
}
class ViewHolder{
class ViewHolder{ lateinit var checkBox: CheckBox
lateinit var checkBox: CheckBox lateinit var imageView: ImageView
lateinit var imageView: ImageView }
}
} }
\ No newline at end of file
package com.test.mydemo3.antivirus package com.xm.test.myfilemaster.antivirus
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
...@@ -9,11 +9,11 @@ import android.view.View ...@@ -9,11 +9,11 @@ import android.view.View
import android.widget.ProgressBar import android.widget.ProgressBar
import android.widget.TextView import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.test.mydemo3.MyApplication
import com.test.mydemo3.R
import com.test.mydemo3.activity.ScanResultActivity
import com.trustlook.sdk.cloudscan.CloudScanListener import com.trustlook.sdk.cloudscan.CloudScanListener
import com.trustlook.sdk.data.AppInfo import com.trustlook.sdk.data.AppInfo
import com.xm.test.myfilemaster.MyApplication
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.ScanResultActivity
class AntivirusActivity : AppCompatActivity() { class AntivirusActivity : AppCompatActivity() {
......
package com.test.mydemo3.base package com.xm.test.myfilemaster.base
import android.content.Context import android.content.Context
import android.util.AttributeSet import android.util.AttributeSet
import android.view.View import android.view.View
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
abstract class BaseAbsView : ComponentActivity(),View.OnClickListener { abstract class BaseAbsView : ComponentActivity(),View.OnClickListener {
override fun onCreateView(name: String, context: Context, attrs: AttributeSet): View? { override fun onCreateView(name: String, context: Context, attrs: AttributeSet): View? {
return super.onCreateView(name, context, attrs) return super.onCreateView(name, context, attrs)
} }
abstract fun initView() abstract fun initView()
} }
\ No newline at end of file
package com.test.mydemo3.base package com.xm.test.myfilemaster.base
interface BaseActivityListener { interface BaseActivityListener {
fun setTitle(str: String) fun setTitle(str: String)
fun isDeleteShow(isShow: Boolean) fun isDeleteShow(isShow: Boolean)
fun isShareShow(isShow: Boolean) fun isShareShow(isShow: Boolean)
fun isNewShow(isShow: Boolean) fun isNewShow(isShow: Boolean)
fun isCancelShow(isShow: Boolean) fun isCancelShow(isShow: Boolean)
fun isQuitShow(isShow: Boolean) fun isQuitShow(isShow: Boolean)
fun isEditShow(isShow: Boolean) fun isEditShow(isShow: Boolean)
} }
\ No newline at end of file
package com.test.mydemo3.fragment package com.xm.test.myfilemaster.fragment
import android.content.Intent import android.content.Intent
import androidx.fragment.app.viewModels
import android.os.Bundle import android.os.Bundle
import android.util.SparseBooleanArray import android.util.SparseBooleanArray
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
...@@ -9,17 +8,14 @@ import android.view.LayoutInflater ...@@ -9,17 +8,14 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.GridView import android.widget.GridView
import android.widget.LinearLayout import com.xm.test.myfilemaster.R
import android.widget.RelativeLayout import com.xm.test.myfilemaster.activity.FileManagerActivity
import com.test.mydemo3.R import com.xm.test.myfilemaster.activity.MediaActivity
import com.test.mydemo3.activity.FileManagerActivity import com.xm.test.myfilemaster.adapter.MediaAdapter
import com.test.mydemo3.activity.MediaActivity import com.xm.test.myfilemaster.model.FileBean
import com.test.mydemo3.adapter.MediaAdapter import com.xm.test.myfilemaster.util.MediaUtil
import com.test.mydemo3.model.FileBean import com.xm.test.myfilemaster.util.PermissionUtil
import com.test.mydemo3.util.FileUtil import com.xm.test.myfilemaster.view.CustomDialog
import com.test.mydemo3.util.MediaUtil
import com.test.mydemo3.util.PermissionUtil
import com.test.mydemo3.view.CustomDialog
class FileManagerFragment : Fragment(), View.OnClickListener { class FileManagerFragment : Fragment(), View.OnClickListener {
private lateinit var mView: View private lateinit var mView: View
......
package com.test.mydemo3.fragment package com.xm.test.myfilemaster.fragment
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
......
package com.test.mydemo3.fragment package com.xm.test.myfilemaster.fragment
import android.app.ActivityManager import android.app.ActivityManager
import android.content.Context import android.content.Context
...@@ -15,16 +15,15 @@ import android.view.ViewGroup ...@@ -15,16 +15,15 @@ import android.view.ViewGroup
import android.widget.LinearLayout import android.widget.LinearLayout
import android.widget.ProgressBar import android.widget.ProgressBar
import android.widget.TextView import android.widget.TextView
import com.test.mydemo3.R import com.xm.test.myfilemaster.R
import com.test.mydemo3.activity.BatteryActivity import com.xm.test.myfilemaster.activity.BatteryActivity
import com.test.mydemo3.activity.CleanActivity import com.xm.test.myfilemaster.activity.CleanActivity
import com.test.mydemo3.activity.SimilarImagesActivity import com.xm.test.myfilemaster.activity.ScanEmptyFilesActivity
import com.test.mydemo3.activity.ScanEmptyFilesActivity import com.xm.test.myfilemaster.activity.ScanLargeFilesActivity
import com.test.mydemo3.activity.ScanLargeFilesActivity import com.xm.test.myfilemaster.activity.SimilarImagesActivity
import com.test.mydemo3.antivirus.AntivirusActivity import com.xm.test.myfilemaster.antivirus.AntivirusActivity
import com.test.mydemo3.util.PermissionUtil import com.xm.test.myfilemaster.util.PermissionUtil
import com.test.mydemo3.view.CirclePgBar import com.xm.test.myfilemaster.view.CustomDialog
import com.test.mydemo3.view.CustomDialog
class HomeFragment : Fragment(), OnClickListener{ class HomeFragment : Fragment(), OnClickListener{
private lateinit var mView: View private lateinit var mView: View
...@@ -37,7 +36,7 @@ class HomeFragment : Fragment(), OnClickListener{ ...@@ -37,7 +36,7 @@ class HomeFragment : Fragment(), OnClickListener{
private lateinit var mMemoryUseText: TextView private lateinit var mMemoryUseText: TextView
private lateinit var mMemoryUseProgress: ProgressBar private lateinit var mMemoryUseProgress: ProgressBar
private lateinit var mBatteryInfo: View private lateinit var mBatteryInfo: View
private lateinit var mCirclePgBar: CirclePgBar private lateinit var mCirclePgBar: com.xm.test.myfilemaster.view.CirclePgBar
companion object { companion object {
fun newInstance() = HomeFragment() fun newInstance() = HomeFragment()
} }
...@@ -81,7 +80,7 @@ class HomeFragment : Fragment(), OnClickListener{ ...@@ -81,7 +80,7 @@ class HomeFragment : Fragment(), OnClickListener{
mScanEmptyFiles.setOnClickListener(this) mScanEmptyFiles.setOnClickListener(this)
mBatteryInfo.setOnClickListener(this) mBatteryInfo.setOnClickListener(this)
mView.findViewById<CirclePgBar>(R.id.progress_circular).setOnClickListener(this) mView.findViewById<com.xm.test.myfilemaster.view.CirclePgBar>(R.id.progress_circular).setOnClickListener(this)
mView.findViewById<View>(R.id.home_clean_btn).setOnClickListener(this) mView.findViewById<View>(R.id.home_clean_btn).setOnClickListener(this)
mView.findViewById<View>(R.id.antivirus_btn).setOnClickListener (this) mView.findViewById<View>(R.id.antivirus_btn).setOnClickListener (this)
......
package com.test.mydemo3.fragment package com.xm.test.myfilemaster.fragment
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
......
package com.test.mydemo3.fragment package com.xm.test.myfilemaster.fragment
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
...@@ -22,18 +22,17 @@ import androidx.core.view.isVisible ...@@ -22,18 +22,17 @@ import androidx.core.view.isVisible
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.kongzue.dialogx.dialogs.WaitDialog import com.kongzue.dialogx.dialogs.WaitDialog
import com.test.mydemo3.MyApplication import com.xm.test.myfilemaster.MyApplication
import com.test.mydemo3.R import com.xm.test.myfilemaster.R
import com.test.mydemo3.activity.BaseActivityViewModel import com.xm.test.myfilemaster.activity.BaseActivityViewModel
import com.test.mydemo3.activity.HomeActivity import com.xm.test.myfilemaster.activity.HomeActivity
import com.test.mydemo3.activity.InternalStorageActivity import com.xm.test.myfilemaster.activity.MoveOrCopyActivity
import com.test.mydemo3.activity.MoveOrCopyActivity import com.xm.test.myfilemaster.adapter.FilesItemViewAdapter
import com.test.mydemo3.adapter.FilesItemViewAdapter import com.xm.test.myfilemaster.base.BaseActivity
import com.test.mydemo3.base.BaseActivity import com.xm.test.myfilemaster.model.FileBean
import com.test.mydemo3.model.FileBean import com.xm.test.myfilemaster.util.FileUtil
import com.test.mydemo3.util.FileUtil import com.xm.test.myfilemaster.util.PermissionUtil
import com.test.mydemo3.util.PermissionUtil import com.xm.test.myfilemaster.view.CustomDialog
import com.test.mydemo3.view.CustomDialog
import java.io.File import java.io.File
class InternalStorageFragment : Fragment(), View.OnClickListener { class InternalStorageFragment : Fragment(), View.OnClickListener {
...@@ -225,7 +224,7 @@ class InternalStorageFragment : Fragment(), View.OnClickListener { ...@@ -225,7 +224,7 @@ class InternalStorageFragment : Fragment(), View.OnClickListener {
mBaseViewModel.setNumber(switchNumber) mBaseViewModel.setNumber(switchNumber)
} }
R.id.btn_delete ->{ R.id.btn_delete ->{
val customDialog = com.test.mydemo3.view.CustomDialog(requireContext()) val customDialog = CustomDialog(requireContext())
customDialog.setsCancel(View.OnClickListener { customDialog.setsCancel(View.OnClickListener {
customDialog.dismiss() customDialog.dismiss()
}).setsConfirm(View.OnClickListener { }).setsConfirm(View.OnClickListener {
......
package com.test.mydemo3.model package com.xm.test.myfilemaster.model
data class GlobalConfig( data class GlobalConfig(
val cacheTime: Int, val cacheTime: Int,
val rateWindowInterval: Int, val rateWindowInterval: Int,
val buyInsertInterval: Int, val buyInsertInterval: Int,
val natureInsertInterval: Int, val natureInsertInterval: Int,
val notDialogInterval: Int val notDialogInterval: Int
) )
data class PushManagement( data class PushManagement(
val pushShow: Int, val pushShow: Int,
val newUserAvoidTime: Int, val newUserAvoidTime: Int,
val allPushInterval: Int, val allPushInterval: Int,
val oPushInterval: Int, val oPushInterval: Int,
val pushCircleOrder: List<Int>, val pushCircleOrder: List<Int>,
val scenePush: List<Int> val scenePush: List<Int>
) )
data class AdsCfg( data class AdsCfg(
val adOpen: AdInfo, val adOpen: AdInfo,
val adInsertBattery: AdInfo val adInsertBattery: AdInfo
) )
data class AdInfo( data class AdInfo(
val isShow: Boolean, val isShow: Boolean,
val showInterval: Int, val showInterval: Int,
val newUserAvoidTime: Int, val newUserAvoidTime: Int,
val unitId: String, val unitId: String,
val type: String, val type: String,
val openAdIsShow: Int, val openAdIsShow: Int,
val loadingPageTime: Int val loadingPageTime: Int
) )
data class PushCfg( data class PushCfg(
val batteryPush: PushInfo, val batteryPush: PushInfo,
val batteryLowBoost: PushInfo val batteryLowBoost: PushInfo
) )
data class PushInfo( data class PushInfo(
val pushStayTime: Int, val pushStayTime: Int,
val lastUseInterval: Int, val lastUseInterval: Int,
val featureEx1: Int, val featureEx1: Int,
val pushInterval: Int val pushInterval: Int
) )
data class Result( data class Result(
val data: Data val data: Data
) )
data class Data( data class Data(
val globalConfig: GlobalConfig, val globalConfig: GlobalConfig,
val pushManagement: PushManagement, val pushManagement: PushManagement,
val adsCfg: AdsCfg, val adsCfg: AdsCfg,
val pushCfg: PushCfg val pushCfg: PushCfg
) )
data class AdConfigData( data class AdConfigData(
val status: Int, val status: Int,
val msg: String, val msg: String,
val sign: String, val sign: String,
val result: Result, val result: Result,
val extras: Any?, val extras: Any?,
val enc: Any?, val enc: Any?,
val security: String val security: String
) )
package com.test.mydemo3.model package com.xm.test.myfilemaster.model
import java.io.Serializable import java.io.Serializable
class CleanBean: Serializable { class CleanBean: Serializable {
lateinit var typeName: String lateinit var typeName: String
var isListViewShow = false var isListViewShow = false
var fileBeans = ArrayList<FileBean>() var fileBeans = ArrayList<FileBean>()
} }
\ No newline at end of file
package com.test.mydemo3.model package com.xm.test.myfilemaster.model
import android.graphics.Bitmap import android.graphics.Bitmap
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import java.io.Serializable import java.io.Serializable
class FileBean : Serializable{ class FileBean : Serializable{
var fileName: String = "" var fileName: String = ""
var filePath: String = "" var filePath: String = ""
var hint: String? = null var hint: String? = null
var isDir: Boolean = false var isDir: Boolean = false
var drawable : Drawable? = null var drawable : Drawable? = null
var fileType: String = "" var fileType: String = ""
var fileSize: Long = 0 var fileSize: Long = 0
var fileBitmap: Bitmap? = null var fileBitmap: Bitmap? = null
var childList = ArrayList<FileBean>() var childList = ArrayList<FileBean>()
override fun toString(): String { override fun toString(): String {
return "FileBean(fileName='$fileName', filePath='$filePath', isDir=$isDir, fileType='$fileType', childList=${childList.toString()})" return "FileBean(fileName='$fileName', filePath='$filePath', isDir=$isDir, fileType='$fileType', childList=${childList.toString()})"
} }
} }
\ No newline at end of file
package com.test.mydemo3.model package com.xm.test.myfilemaster.model
class FilesItemBean{ class FilesItemBean{
var resId: Int = 0 var resId: Int = 0
lateinit var mItemFileName: String lateinit var mItemFileName: String
lateinit var mItemFileNone: String lateinit var mItemFileNone: String
var mItemSelectChecked: Boolean = false var mItemSelectChecked: Boolean = false
lateinit var mItemFilePath: String lateinit var mItemFilePath: String
var mFileItemCount: Int = 0 var mFileItemCount: Int = 0
var mFileSize: Int = 0 var mFileSize: Int = 0
var mFileType: Int = 0 // type 1 empty, 2 ..., 3 ... var mFileType: Int = 0 // type 1 empty, 2 ..., 3 ...
} }
\ No newline at end of file
package com.test.mydemo3.util package com.xm.test.myfilemaster.util
import android.annotation.SuppressLint import android.content.Context
import android.content.Context import android.content.Intent
import android.content.Intent import android.content.IntentFilter
import android.content.IntentFilter
import java.util.Objects object BatteryUtil {
lateinit var technology : String
object BatteryUtil { var voltage: Int = 0 //瓦特
lateinit var technology : String var level: Int = 0 //电量
var voltage: Int = 0 //瓦特 var temperature: Double = 0.0 //温度
var level: Int = 0 //电量 lateinit var status : String
var temperature: Double = 0.0 //温度 lateinit var health : String
lateinit var status : String lateinit var plugged : String
lateinit var health : String
lateinit var plugged : String
/**
* 获取电池容量
/** * */
* 获取电池容量 /*fun getBatteryCapacity(context: Context): String{
* */ val mPowerProfile : Objects
/*fun getBatteryCapacity(context: Context): String{ var batteryCapacity = 0.0
val mPowerProfile : Objects val POWER_PROFILE_CLASS = "com.android.internal.os.PowerProfile"
var batteryCapacity = 0.0 try {
val POWER_PROFILE_CLASS = "com.android.internal.os.PowerProfile" mPowerProfile = Class.forName(POWER_PROFILE_CLASS)
try { .getConstructor(Context::class.java)
mPowerProfile = Class.forName(POWER_PROFILE_CLASS) .newInstance(context) as Objects
.getConstructor(Context::class.java) batteryCapacity = Class
.newInstance(context) as Objects .forName(POWER_PROFILE_CLASS)
batteryCapacity = Class .getMethod("getBatteryCapacity")
.forName(POWER_PROFILE_CLASS) .invoke(mPowerProfile) as Double
.getMethod("getBatteryCapacity")
.invoke(mPowerProfile) as Double }catch (e: Exception){
e.printStackTrace()
}catch (e: Exception){ }
e.printStackTrace()
} return batteryCapacity.toString()
}*/
return batteryCapacity.toString()
}*/ fun ReceiverBatteryOhterInfo(context: Context){
val intentFilter = IntentFilter(Intent.ACTION_BATTERY_CHANGED)
fun ReceiverBatteryOhterInfo(context: Context){ val receiver = context.registerReceiver(null, intentFilter)
val intentFilter = IntentFilter(Intent.ACTION_BATTERY_CHANGED) technology = receiver?.getStringExtra("technology").toString()
val receiver = context.registerReceiver(null, intentFilter) if (technology.equals("") || technology.equals(null)){
technology = receiver?.getStringExtra("technology").toString() technology = "Unknown"
if (technology.equals("") || technology.equals(null)){ }
technology = "Unknown" voltage = receiver?.getIntExtra("voltage",0) as Int
} level = receiver.getIntExtra("level", 0) as Int
voltage = receiver?.getIntExtra("voltage",0) as Int temperature = receiver.getIntExtra("temperature", 0 ) / 10.0
level = receiver.getIntExtra("level", 0) as Int
temperature = receiver.getIntExtra("temperature", 0 ) / 10.0 }
}
} }
\ No newline at end of file
package com.test.mydemo3.util package com.xm.test.myfilemaster.util
import com.google.gson.Gson import com.google.gson.Gson
import com.test.mydemo3.model.AdConfigData import com.xm.test.myfilemaster.model.AdConfigData
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
import okhttp3.Request import okhttp3.Request
import okhttp3.Response
object HttpRequest {
object HttpRequest {
fun getMaxAdConfig(){
fun getMaxAdConfig(){ Thread(Runnable {
Thread(Runnable { val okHttpClient = OkHttpClient()
val okHttpClient = OkHttpClient() val request = Request.Builder()
val request = Request.Builder() .url(UrlManager.URL_)
.url(UrlManager.URL_) .build()
.build()
val response = okHttpClient.newCall(request).execute()
val response = okHttpClient.newCall(request).execute() if (response.isSuccessful){
if (response.isSuccessful){ Gson().fromJson(response.body().toString(), AdConfigData::class.java)
Gson().fromJson(response.body().toString(), AdConfigData::class.java) }
}
}).start()
}).start() }
}
} }
\ No newline at end of file
package com.test.mydemo3.util package com.xm.test.myfilemaster.util
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.ContentResolver import android.content.ContentResolver
import android.content.Context import android.content.Context
import android.graphics.Bitmap import android.graphics.Bitmap
import android.graphics.BitmapFactory import android.graphics.BitmapFactory
import android.provider.MediaStore import android.provider.MediaStore
import android.util.TypedValue import android.util.TypedValue
import com.test.mydemo3.model.FileBean import com.xm.test.myfilemaster.model.FileBean
import java.io.File import java.io.File
object MediaUtil { object MediaUtil {
fun cropImage(imagePath: String, desiredWidth: Int, desiredHeight: Int, context: Context): Bitmap { fun cropImage(imagePath: String, desiredWidth: Int, desiredHeight: Int, context: Context): Bitmap {
val desiredHeight_ = TypedValue.applyDimension( val desiredHeight_ = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, TypedValue.COMPLEX_UNIT_DIP,
desiredHeight.toFloat(), desiredHeight.toFloat(),
context.resources.displayMetrics context.resources.displayMetrics
).toInt() ).toInt()
val desiredWidth_ = TypedValue.applyDimension( val desiredWidth_ = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, TypedValue.COMPLEX_UNIT_DIP,
desiredWidth.toFloat(), desiredWidth.toFloat(),
context.resources.displayMetrics context.resources.displayMetrics
).toInt() ).toInt()
// 从图片路径中加载 Bitmap // 从图片路径中加载 Bitmap
val options = BitmapFactory.Options() val options = BitmapFactory.Options()
options.inJustDecodeBounds = true options.inJustDecodeBounds = true
BitmapFactory.decodeFile(imagePath, options) BitmapFactory.decodeFile(imagePath, options)
// 计算采样率以便加载图片时节省内存 // 计算采样率以便加载图片时节省内存
options.inSampleSize = calculateInSampleSize(options, desiredWidth_, desiredHeight_) options.inSampleSize = calculateInSampleSize(options, desiredWidth_, desiredHeight_)
// 加载 Bitmap // 加载 Bitmap
options.inJustDecodeBounds = false options.inJustDecodeBounds = false
val bitmap = BitmapFactory.decodeFile(imagePath, options) val bitmap = BitmapFactory.decodeFile(imagePath, options)
// 裁剪 Bitmap // 裁剪 Bitmap
return Bitmap.createScaledBitmap(bitmap, desiredWidth_, desiredHeight_, false) return Bitmap.createScaledBitmap(bitmap, desiredWidth_, desiredHeight_, false)
} }
fun calculateInSampleSize(options: BitmapFactory.Options, desiredWidth: Int, desiredHeight: Int): Int { fun calculateInSampleSize(options: BitmapFactory.Options, desiredWidth: Int, desiredHeight: Int): Int {
val height = options.outHeight val height = options.outHeight
val width = options.outWidth val width = options.outWidth
var inSampleSize = 1 var inSampleSize = 1
if (height > desiredHeight || width > desiredWidth) { if (height > desiredHeight || width > desiredWidth) {
val halfHeight = height / 2 val halfHeight = height / 2
val halfWidth = width / 2 val halfWidth = width / 2
while ((halfHeight / inSampleSize) >= desiredHeight && (halfWidth / inSampleSize) >= desiredWidth) { while ((halfHeight / inSampleSize) >= desiredHeight && (halfWidth / inSampleSize) >= desiredWidth) {
inSampleSize *= 2 inSampleSize *= 2
} }
} }
return inSampleSize return inSampleSize
} }
@SuppressLint("Range") @SuppressLint("Range")
fun getRecentImages(context: Context, limit: Int): ArrayList<FileBean> { fun getRecentImages(context: Context, limit: Int): ArrayList<FileBean> {
// val images = mutableListOf<String>() // val images = mutableListOf<String>()
val images = ArrayList<FileBean>() val images = ArrayList<FileBean>()
val contentResolver: ContentResolver = context.contentResolver val contentResolver: ContentResolver = context.contentResolver
val projection = arrayOf(MediaStore.Images.Media.DATA) val projection = arrayOf(MediaStore.Images.Media.DATA)
val sortOrder = "${MediaStore.Images.Media.DATE_MODIFIED} DESC" val sortOrder = "${MediaStore.Images.Media.DATE_MODIFIED} DESC"
val cursor = contentResolver.query( val cursor = contentResolver.query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
projection, projection,
null, null,
null, null,
sortOrder sortOrder
) )
cursor?.use { cursor?.use {
var count = 0 var count = 0
while (it.moveToNext() && count < limit) { while (it.moveToNext() && count < limit) {
val fileBean = FileBean() val fileBean = FileBean()
val imagePath = it.getString(it.getColumnIndex(MediaStore.Images.Media.DATA)) val imagePath = it.getString(it.getColumnIndex(MediaStore.Images.Media.DATA))
// images.add(imagePath) // images.add(imagePath)
val file = File(imagePath) val file = File(imagePath)
fileBean.fileName = file.name fileBean.fileName = file.name
fileBean.filePath = file.absolutePath fileBean.filePath = file.absolutePath
fileBean.fileType = FileUtil.getFileType(file) fileBean.fileType = FileUtil.getFileType(file)
fileBean.fileBitmap = BitmapFactory.decodeFile(imagePath) fileBean.fileBitmap = BitmapFactory.decodeFile(imagePath)
images.add(fileBean) images.add(fileBean)
count++ count++
} }
} }
cursor?.close() cursor?.close()
return images return images
} }
// fun findSimilarImages(baseImagePath: String, imageDirectoryPath: String, threshold: Double): List<String> { // fun findSimilarImages(baseImagePath: String, imageDirectoryPath: String, threshold: Double): List<String> {
// val similarImages = mutableListOf<String>() // val similarImages = mutableListOf<String>()
// //
// val baseImage = File(baseImagePath) // val baseImage = File(baseImagePath)
// val baseImageHash = ImageHash.getHash(baseImage) // val baseImageHash = ImageHash.getHash(baseImage)
// //
// val imageDirectory = File(imageDirectoryPath) // val imageDirectory = File(imageDirectoryPath)
// val imageFiles = imageDirectory.listFiles { file -> file.isFile } // val imageFiles = imageDirectory.listFiles { file -> file.isFile }
// //
// imageFiles?.let { // imageFiles?.let {
// for (imageFile in it) { // for (imageFile in it) {
// val imageHash = ImageHash.getHash(imageFile) // val imageHash = ImageHash.getHash(imageFile)
// val similarity = ImageHash.getSimilarity(baseImageHash, imageHash) // val similarity = ImageHash.getSimilarity(baseImageHash, imageHash)
// if (similarity >= threshold) { // if (similarity >= threshold) {
// similarImages.add(imageFile.absolutePath) // similarImages.add(imageFile.absolutePath)
// } // }
// } // }
// } // }
// //
// return similarImages // return similarImages
// } // }
} }
\ No newline at end of file
package com.test.mydemo3.util package com.xm.test.myfilemaster.util
import android.Manifest import android.Manifest
import android.app.Activity import android.content.Context
import android.content.Context import android.content.Intent
import android.content.Intent import android.content.pm.PackageManager
import android.content.pm.PackageManager import android.net.Uri
import android.net.Uri import android.os.Build
import android.os.Build import android.os.Environment
import android.os.Environment import android.provider.Settings
import android.provider.Settings import androidx.activity.ComponentActivity
import androidx.activity.ComponentActivity import androidx.core.app.ActivityCompat
import androidx.activity.result.contract.ActivityResultContract import androidx.fragment.app.FragmentActivity
import androidx.activity.result.contract.ActivityResultContracts import com.permissionx.guolindev.PermissionX
import androidx.core.app.ActivityCompat import com.permissionx.guolindev.callback.RequestCallback
import androidx.core.content.ContextCompat import com.xm.test.myfilemaster.activity.HomeActivity
import androidx.fragment.app.FragmentActivity
import com.permissionx.guolindev.PermissionX object PermissionUtil {
import com.permissionx.guolindev.callback.RequestCallback
import com.test.mydemo3.activity.HomeActivity var LOCATION_PERMISSION = false
import com.test.mydemo3.base.BaseActivity fun requestPermission(context: Context?){
import java.security.Permissions if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){
object PermissionUtil { }else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.R) {
val intent = Intent().apply {
var LOCATION_PERMISSION = false action = Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION
fun requestPermission(context: Context?){ data = Uri.fromParts("package", context?.packageName, null)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){ flags = Intent.FLAG_ACTIVITY_NEW_TASK
}
}else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.R) { context?.startActivity(intent)
val intent = Intent().apply {
action = Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION }else{
data = Uri.fromParts("package", context?.packageName, null) val intent = Intent().apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS
} data = Uri.fromParts("package", context?.packageName, null)
context?.startActivity(intent) }
context?.startActivity(intent)
}else{ }
val intent = Intent().apply { }
action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS
data = Uri.fromParts("package", context?.packageName, null) fun checkGrantedPermission(activity: ComponentActivity?) : Boolean{
} if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){
context?.startActivity(intent) //TODO android 14以上
} HomeActivity.isPermission = Environment.isExternalStorageManager()
} return HomeActivity.isPermission
}else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.R) {
fun checkGrantedPermission(activity: ComponentActivity?) : Boolean{ HomeActivity.isPermission = Environment.isExternalStorageManager()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){ return HomeActivity.isPermission
//TODO android 14以上 }else{
HomeActivity.isPermission = Environment.isExternalStorageManager() HomeActivity.isPermission = ActivityCompat.checkSelfPermission(activity!!, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
return HomeActivity.isPermission return HomeActivity.isPermission
}else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.R) { }
HomeActivity.isPermission = Environment.isExternalStorageManager() }
return HomeActivity.isPermission
}else{ fun requestLocationPermission(context: FragmentActivity?){
HomeActivity.isPermission = ActivityCompat.checkSelfPermission(activity!!, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED PermissionX.init(context!!).permissions(
return HomeActivity.isPermission Manifest.permission.ACCESS_FINE_LOCATION,
} Manifest.permission.ACCESS_COARSE_LOCATION,
} ).request(RequestCallback{ allGranted, grantedList, deniedList ->
if (allGranted){
fun requestLocationPermission(context: FragmentActivity?){ LOCATION_PERMISSION = true
PermissionX.init(context!!).permissions( }else{
Manifest.permission.ACCESS_FINE_LOCATION, LOCATION_PERMISSION = false
Manifest.permission.ACCESS_COARSE_LOCATION, }
).request(RequestCallback{ allGranted, grantedList, deniedList -> })
if (allGranted){ }
LOCATION_PERMISSION = true
}else{
LOCATION_PERMISSION = false
}
})
}
} }
\ No newline at end of file
package com.test.mydemo3.util package com.xm.test.myfilemaster.util
import android.bluetooth.BluetoothAdapter import android.bluetooth.BluetoothAdapter
import android.content.ContentResolver import android.content.ContentResolver
import android.content.Context import android.content.Context
import android.location.LocationManager import android.location.LocationManager
import android.net.wifi.WifiManager import android.net.wifi.WifiManager
import android.provider.Settings import android.provider.Settings
object SystemServerState { object SystemServerState {
fun isGPSEnabled(context: Context): Boolean { fun isGPSEnabled(context: Context): Boolean {
val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) ?: false return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) ?: false
} }
fun isBluetoothEnabled(): Boolean { fun isBluetoothEnabled(): Boolean {
val bluetoothAdapter = BluetoothAdapter.getDefaultAdapter() val bluetoothAdapter = BluetoothAdapter.getDefaultAdapter()
return bluetoothAdapter?.isEnabled ?: false return bluetoothAdapter?.isEnabled ?: false
} }
fun isHotspotEnabled(context: Context): Boolean { fun isHotspotEnabled(context: Context): Boolean {
val wifiManager = context.getSystemService(Context.WIFI_SERVICE) as WifiManager val wifiManager = context.getSystemService(Context.WIFI_SERVICE) as WifiManager
return wifiManager.isWifiEnabled ?: false return wifiManager.isWifiEnabled ?: false
} }
fun isAutoBrightnessEnabled(contentResolver: ContentResolver?): Boolean { fun isAutoBrightnessEnabled(contentResolver: ContentResolver?): Boolean {
try { try {
val mode: Int = val mode: Int =
Settings.System.getInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE) Settings.System.getInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE)
return mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC return mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC
} catch (e: Settings.SettingNotFoundException) { } catch (e: Settings.SettingNotFoundException) {
e.printStackTrace() e.printStackTrace()
} }
return false return false
} }
} }
\ No newline at end of file
package com.test.mydemo3.util package com.xm.test.myfilemaster.util
object UrlManager { object UrlManager {
const val AD_APP_KEY = "GGPreND6SRmCt1zJgn5faiLGD8c2PVGPLgPpSg7cHanVTud1DhtuI9MmteTqlEviaJ57WnxW68kQDaATJ5z3cW" const val AD_APP_KEY = "GGPreND6SRmCt1zJgn5faiLGD8c2PVGPLgPpSg7cHanVTud1DhtuI9MmteTqlEviaJ57WnxW68kQDaATJ5z3cW"
const val AD_UNIT_ID = "" const val AD_UNIT_ID = ""
const val TEST_PLACEMENT_HERE = "" const val TEST_PLACEMENT_HERE = ""
const val URL_ = "https://api.magicfolder.xyz/cccfig?pkg=testonline" const val URL_ = "https://api.magicfolder.xyz/cccfig?pkg=testonline"
} }
\ No newline at end of file
...@@ -149,7 +149,7 @@ ...@@ -149,7 +149,7 @@
<!-- android:visibility="gone"--> <!-- android:visibility="gone"-->
<!-- app:lottie_loop="true"/>--> <!-- app:lottie_loop="true"/>-->
<com.test.mydemo3.view.CirclePgBar <com.xm.test.myfilemaster.view.CirclePgBar
android:id="@+id/progress_circular" android:id="@+id/progress_circular"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"/> android:layout_height="match_parent"/>
......
package com.test.mydemo3 package com.xm.mydemo3
import org.junit.Test import org.junit.Test
......
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