Commit 7065ddef authored by wanglei's avatar wanglei

开屏广告

parent 0160f04a
......@@ -3,14 +3,17 @@
217e8f437c9fc4244d6e74653ac8a8c7
1be9e72506f3307ce6a9e78d26d65bd0
4df96d3bc9afd17b812e65e6c6add1ef
6e5e97b26091769e913a9c39d6919d80
974322f19d813702ea048d95288d2b8c
4da578532cf0b91cb95142d4ea36afe0
d898644c55810f1f4ffbb7930bfc8994
5320e6915ea65c264b5682649c3ca647
29015bbfcc182d80e7f75bd2c38e4521
ff22dbf67af979b8b3169a242d10f166
1be23983f512930c36ba4ea218f1ff47
dd2971b0681141d57b221687791ad1bd
86a0d598cde251321e21a0da4ab94065
74616804a7dc29147dfb0afe122a9fd2
35695de726f6044576c830bf197f36f7
064929c5824ad68d510310b5a26b3ef6
#Mon Apr 22 09:55:03 CST 2024
json=-697708880
#Mon Apr 22 13:51:06 CST 2024
json=-500452207
#
#Mon Apr 22 09:55:04 CST 2024
#Mon Apr 22 13:56:35 CST 2024
7M6t_fBDFPKdlDdekL1bw1OntM7gd4Vk5yK_p7yEdl9BCKCfGZpmZMvL2LDHcuNGWIHLXPD0w_SFDDv94WMaSw=GGPreND6SRmCt1zJgn5faiLGD8c2PVGPLgPpSg7cHanVTud1DhtuI9MmteTqlEviaJ57WnxW68kQDaATJ5z3cW
sdk_analysis_plugin_version=5.2.4
set_multidex=true
......@@ -9,7 +9,7 @@ applovin {
}
android {
namespace 'com.xm.test.myfilemaster'
namespace 'com.xm.test.myfile'
compileSdk 34
defaultConfig {
......@@ -71,7 +71,6 @@ dependencies {
def dialogx_version = "0.0.49"
implementation "com.kongzue.dialogx:DialogX:${dialogx_version}"
// implementation 'com.github.aicoin:ImageHash:1.0.0'
implementation 'com.guolindev.permissionx:permissionx:1.7.1'
......@@ -103,4 +102,9 @@ dependencies {
implementation("com.blankj:utilcodex:1.31.1")
implementation("androidx.datastore:datastore-preferences:1.0.0")
implementation("com.facebook.android:facebook-android-sdk:[8,9)")
}
......@@ -34,11 +34,7 @@
android:supportsRtl="true"
android:theme="@style/Theme.MyDemo3"
tools:targetApi="31">
<activity
android:name=".activity.ImageShowActivity"
android:screenOrientation="portrait"
android:theme="@style/MediaActivityTheme"
android:exported="false" />
<activity
android:name=".activity.ResultPageActivity"
android:exported="false"
......@@ -117,16 +113,26 @@
<activity
android:name=".MainActivity"
android:exported="true"
android:theme="@style/MediaActivityTheme"
android:screenOrientation="portrait"
android:theme="@style/MediaActivityTheme"
tools:ignore="DiscouragedApi">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3940256099942544~3347511713" />
<!-- 病毒扫描,key是和包名绑定的 -->
<meta-data
android:name="com.trustlook.ApiKey"
......
package com.xm.test.myfile
import android.Manifest
import android.annotation.SuppressLint
import android.content.Intent
import android.os.Build
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.lifecycle.lifecycleScope
import com.kongzue.dialogx.DialogX
import com.permissionx.guolindev.PermissionX
import com.xm.test.myfile.SpKey.isAgreeAppPageKey
import com.xm.test.myfile.activity.HomeActivity
import com.xm.test.myfile.ad.ComUtils
import com.xm.test.myfile.ad.MaxAdUtils
import com.xm.test.myfile.databinding.ActivityMainBinding
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlin.concurrent.timer
import kotlin.random.Random
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private var isPause = false
@SuppressLint("SuspiciousIndentation")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
DialogX.init(this)
window.statusBarColor = ContextCompat.getColor(this, R.color.color_6185d3)
initView()
}
private fun initView() {
val isAgreeAppPage = MyApplication.mSp?.getBoolean(isAgreeAppPageKey, false) ?: false
if (isAgreeAppPage) {
ComUtils.requestCfg()
startAppPage()
}
findViewById<View>(R.id.start_app_btn).setOnClickListener {
val edit = MyApplication.mSp?.edit()
edit?.putBoolean(isAgreeAppPageKey, true)
edit?.apply()
startAppPage()
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
PermissionX.init(this).permissions(Manifest.permission.POST_NOTIFICATIONS)
.request { allGranted, grantedList, deniedList ->
}
}
}
private fun startAppPage() {
window.statusBarColor = ContextCompat.getColor(this, R.color.white)
binding.startRulesLayout.visibility = View.GONE
binding.llContent.visibility = View.VISIBLE
startProgress()
(application as MyApplication).initMax {
MaxAdUtils.loadOpenAd { flag ->
if (flag) {
timer(period = 300) {
if (isFinishing || isDestroyed) {
cancel()
} else if (binding.mainPageProgress.progress > 25) {
binding.mainPageProgress.progress = 99
if (!isPause) {
cancel()
runOnUiThread {
MaxAdUtils.showAppOpenAd(this@MainActivity, "splash_slot") {
binding.mainPageProgress.progress = 100
startVi()
}
}
}
}
}
}
}
MaxAdUtils.loadMaxNativeAd()
MaxAdUtils.loadInterstitialAd(this@MainActivity)
}
}
private fun startProgress() = lifecycleScope.launch(Dispatchers.Main) {
val pg = binding.mainPageProgress
var time = 0
while (true) {
delay(200)
time += 200
if (pg.progress <= 98 && time <= 15000) {
pg.progress = (pg.progress + Random.nextInt(5)).coerceAtMost(98)
} else if (pg.progress != 99 && !isPause) {
break
}
}
delay(50)
pg.progress = 100
startVi()
}
fun startVi() {
startActivity(Intent(this, HomeActivity::class.java))
finish()
}
override fun onStart() {
super.onStart()
isPause = false
}
override fun onStop() {
super.onStop()
isPause = true
}
}
\ No newline at end of file
package com.xm.test.myfilemaster
package com.xm.test.myfile
import android.annotation.SuppressLint
import android.app.Application
......@@ -7,31 +7,29 @@ import android.content.Intent
import android.content.IntentFilter
import android.content.SharedPreferences
import android.util.Log
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import androidx.lifecycle.ProcessLifecycleOwner
import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdListener
import com.applovin.mediation.MaxError
import com.applovin.mediation.ads.MaxAppOpenAd
import com.applovin.sdk.AppLovinMediationProvider
import com.applovin.sdk.AppLovinSdk
import com.applovin.sdk.AppLovinSdkInitializationConfiguration
import com.cloud.cleanjunksdk.task.CheckSdkCallback
import com.cloud.cleanjunksdk.task.Clean
import com.cloud.cleanjunksdk.task.CleanSDK
import com.cloud.cleanjunksdk.tools.Region
import com.google.android.gms.ads.identifier.AdvertisingIdClient
import com.trustlook.sdk.cloudscan.CloudScanClient
import com.xm.test.myfilemaster.ad.GravitySensorManager
import com.xm.test.myfilemaster.notification.ActionBroadcast
import com.xm.test.myfilemaster.util.UrlManager
import com.xm.test.myfile.ad.GravitySensorManager
import com.xm.test.myfile.notification.ActionBroadcast
import java.util.Collections
import java.util.concurrent.Executors
import java.util.concurrent.atomic.AtomicBoolean
class MyApplication : Application() {
private lateinit var gravitySensorManager: GravitySensorManager
private val isAdsInitializeCalled = AtomicBoolean(false)
companion object {
var mCleanSdk: Clean? = null
@SuppressLint("StaticFieldLeak")
var mCloudScan: CloudScanClient? = null
var mSp: SharedPreferences? = null
......@@ -43,13 +41,12 @@ class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
fContext=this
// AppLovinSdk.getInstance( this ).initializeSdk({ configuration: AppLovinSdkConfiguration ->
// {
// appOpenManager = ExampleAppOpenManager(applicationContext)
// }
// )
// }
fContext = this
initCleanSdk()
initBroadcast()
}
private fun initCleanSdk() {
mSp = getSharedPreferences("fileManager", MODE_PRIVATE)
CleanSDK.init(this, this, Region.INTL, object : CheckSdkCallback {
override fun onSuccess(p0: Clean?) {
......@@ -69,11 +66,48 @@ class MyApplication : Application() {
AppLovinSdk.getInstance(this).initializeSdk {
}
// AppLovinSdk.getInstance(this).mediationProvider = AppLovinMediationProvider.MAX
initBroadcast()
}
private fun initBroadcast(){
fun initMax(action: () -> Unit) {
//测试Key
var YOUR_SDK_KEY =
"05TMDQ5tZabpXQ45_UTbmEGNUtVAzSTzT6KmWQc5_CuWdzccS4DCITZoL3yIWUG3bbq60QC_d4WF28tUC4gVTF"
//GGPreND6SRmCt1zJgn5faiLGD8c2PVGPLgPpSg7cHanVTud1DhtuI9MmteTqlEviaJ57WnxW68kQDaATJ5z3cW 原文key
//uxm7okanmfth88nb 秘钥
//正式key
val OFFICE_SDK_KEY =
"5n98C3r8e9Dm1Y4VMYZVh/2yO7MWZkhZkGOlbsYJSeCWMxLaRujAuytOys+dv6ySpbmHq/+6yKwORTzYP1kWGmwFJmPaQ/xNAQ4z/y3KKPX9JjLeTAoypAt8FluMvfJyz8WFXm38XuRB5WsMN7TJIrFq"
// YOUR_SDK_KEY = AESHelper.decrypt(OFFICE_SDK_KEY)
Log.e("YOUR_SDK_KEY", "$YOUR_SDK_KEY")
val executor = Executors.newSingleThreadExecutor()
executor.execute {
val initConfigBuilder =
AppLovinSdkInitializationConfiguration.builder(YOUR_SDK_KEY, this)
initConfigBuilder.mediationProvider = AppLovinMediationProvider.MAX
// Enable test mode by default for the current device. Cannot be run on the main thread.
val currentGaid = AdvertisingIdClient.getAdvertisingIdInfo(this).id
if (currentGaid != null) {
initConfigBuilder.testDeviceAdvertisingIds = Collections.singletonList(currentGaid)
}
// Initialize the AppLovin SDK
val sdk = AppLovinSdk.getInstance(this)
sdk.initialize(initConfigBuilder.build()) {
it.countryCode
isAdsInitializeCalled.set(true)
Log.e("yanglin", "AppLovinSdk: INIT countryCode=${it.countryCode}")
action.invoke()
}
executor.shutdown()
}
}
private fun initBroadcast() {
gravitySensorManager = GravitySensorManager(this)
gravitySensorManager.registerListener()
val filter = IntentFilter()
......
package com.xm.test.myfilemaster
package com.xm.test.myfile
import android.os.Build
import android.util.Log
......@@ -6,8 +6,8 @@ import com.blankj.utilcode.util.AppUtils
import com.blankj.utilcode.util.DeviceUtils
import com.blankj.utilcode.util.NetworkUtils
import com.blankj.utilcode.util.ScreenUtils
import com.xm.test.myfilemaster.ad.AESHelper
import com.xm.test.myfilemaster.ad.ConfigHelper
import com.xm.test.myfile.ad.AESHelper
import com.xm.test.myfile.ad.ConfigHelper
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
......
package com.xm.test.myfile
object SpKey {
const val isAgreeAppPageKey = "isAgreeAppPageKey"
}
\ No newline at end of file
package com.xm.test.myfilemaster.activity
package com.xm.test.myfile.activity
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
......
package com.xm.test.myfilemaster.activity
package com.xm.test.myfile.activity
import android.content.Context
import android.content.Intent
......@@ -12,10 +12,9 @@ import android.view.View
import android.widget.ImageView
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.util.BatteryUtil
import com.xm.test.myfilemaster.util.PermissionUtil
import com.xm.test.myfilemaster.util.SystemServerState
import com.xm.test.myfile.R
import com.xm.test.myfile.util.BatteryUtil
import com.xm.test.myfile.util.SystemServerState
import java.util.Calendar
import java.util.Date
......
package com.xm.test.myfilemaster.activity
package com.xm.test.myfile.activity
import android.annotation.SuppressLint
import android.content.Intent
......@@ -23,13 +23,13 @@ import com.cloud.cleanjunksdk.residual.ResidualBean
import com.cloud.cleanjunksdk.task.JunkScanCallback
import com.cm.plugincluster.junkengine.junk.bean.MediaFile
import com.cm.plugincluster.junkengine.junk.engine.MEDIA_TYPE
import com.xm.test.myfilemaster.MyApplication
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.adapter.CleanAdapter
import com.xm.test.myfilemaster.adapter.CleanAdapter2
import com.xm.test.myfilemaster.model.CleanBean
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
import com.xm.test.myfile.MyApplication
import com.xm.test.myfile.R
import com.xm.test.myfile.adapter.CleanAdapter
import com.xm.test.myfile.adapter.CleanAdapter2
import com.xm.test.myfile.model.CleanBean
import com.xm.test.myfile.model.FileBean
import com.xm.test.myfile.util.FileUtil
import java.io.File
class CleanActivity : AppCompatActivity(), CleanAdapter2.IClean {
......
package com.xm.test.myfilemaster.activity
package com.xm.test.myfile.activity
import android.os.Bundle
import com.kongzue.dialogx.dialogs.WaitDialog
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.base.BaseActivity
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
import com.xm.test.myfile.R
import com.xm.test.myfile.base.BaseActivity
import com.xm.test.myfile.model.FileBean
import com.xm.test.myfile.util.FileUtil
class FileManagerActivity : BaseActivity() {
private var mFileBeanList = ArrayList<FileBean>()
......
package com.xm.test.myfilemaster.activity
package com.xm.test.myfile.activity
import android.Manifest
import android.os.Build
......@@ -14,17 +14,14 @@ import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2
import com.permissionx.guolindev.PermissionX
import com.permissionx.guolindev.callback.RequestCallback
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.fragment.FileManagerFragment
import com.xm.test.myfilemaster.fragment.HomeFragment
import com.xm.test.myfilemaster.fragment.InternalStorageFragment
import com.xm.test.myfilemaster.notification.NotificationHelper
import com.xm.test.myfilemaster.notification.NotificationHelper.postNotification
import com.xm.test.myfilemaster.util.PermissionUtil
import com.xm.test.myfile.R
import com.xm.test.myfile.fragment.FileManagerFragment
import com.xm.test.myfile.fragment.HomeFragment
import com.xm.test.myfile.fragment.InternalStorageFragment
import com.xm.test.myfile.notification.NotificationHelper.postNotification
import com.xm.test.myfile.util.PermissionUtil
class HomeActivity : AppCompatActivity() {
private val REQUEST_MANAGE_EXTERNAL_STORAGE_PERMISSION = 101
var mViewPage: ViewPager2? = null
companion object{
......@@ -115,26 +112,24 @@ class HomeActivity : AppCompatActivity() {
PermissionX.init(this).permissions(
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.POST_NOTIFICATIONS,
).request(RequestCallback { allGranted, grantedList, deniedList ->
if (allGranted){
).request { allGranted, grantedList, deniedList ->
if (allGranted) {
isPermission = true
}else{
} else {
isPermission = false
}
})
}
} else {
PermissionX.init(this).permissions(
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.POST_NOTIFICATIONS,
).request(RequestCallback { allGranted, grantedList, deniedList ->
if (allGranted){
).request { allGranted, grantedList, deniedList ->
if (allGranted) {
isPermission = true
}else{
} else {
isPermission = false
}
})
}
}
}
......
......@@ -8,8 +8,7 @@ import android.widget.ImageView
import android.widget.VideoView
import androidx.appcompat.app.AppCompatActivity
import com.bumptech.glide.Glide
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfile.R
class ImageShowActivity : AppCompatActivity() {
......
package com.xm.test.myfilemaster.activity
package com.xm.test.myfile.activity
import android.os.Bundle
import android.os.Environment
import android.widget.ListView
import com.kongzue.dialogx.dialogs.WaitDialog
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.base.BaseActivity
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
import com.xm.test.myfilemaster.util.PermissionUtil
import com.xm.test.myfile.R
import com.xm.test.myfile.base.BaseActivity
import com.xm.test.myfile.model.FileBean
import com.xm.test.myfile.util.FileUtil
import com.xm.test.myfile.util.PermissionUtil
class InternalStorageActivity : BaseActivity() {
private lateinit var mFilesItemListView: ListView
......
package com.xm.test.myfilemaster.activity
package com.xm.test.myfile.activity
import android.annotation.SuppressLint
import android.content.Intent
......@@ -13,15 +13,13 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.ViewModelProvider
import com.kongzue.dialogx.dialogs.WaitDialog
import com.test.mydemo3.activity.ImageShowActivity
import com.xm.test.myfilemaster.MyApplication
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.adapter.MediaAdapter
import com.xm.test.myfilemaster.adapter.MediaAdapter2
import com.xm.test.myfilemaster.databinding.ActivityMediaBinding
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
import com.xm.test.myfilemaster.util.PermissionUtil
import com.xm.test.myfilemaster.view.CustomDialog
import com.xm.test.myfile.MyApplication
import com.xm.test.myfile.R
import com.xm.test.myfile.adapter.MediaAdapter
import com.xm.test.myfile.model.FileBean
import com.xm.test.myfile.util.FileUtil
import com.xm.test.myfile.util.PermissionUtil
import com.xm.test.myfile.view.CustomDialog
import java.io.File
class MediaActivity : AppCompatActivity() {
......
package com.xm.test.myfilemaster.activity
package com.xm.test.myfile.activity
import android.os.Bundle
import android.util.SparseBooleanArray
......@@ -8,11 +8,11 @@ import android.widget.TextView
import android.widget.Toast
import androidx.activity.ComponentActivity
import androidx.core.view.isVisible
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.adapter.FilesItemViewAdapter
import com.xm.test.myfilemaster.fragment.InternalStorageFragment
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
import com.xm.test.myfile.R
import com.xm.test.myfile.adapter.FilesItemViewAdapter
import com.xm.test.myfile.fragment.InternalStorageFragment
import com.xm.test.myfile.model.FileBean
import com.xm.test.myfile.util.FileUtil
class MoveOrCopyActivity : ComponentActivity() {
......
package com.xm.test.myfilemaster.activity
package com.xm.test.myfile.activity
import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.activity.ComponentActivity
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.antivirus.AntivirusActivity
import com.xm.test.myfilemaster.databinding.ActivityAntivirusBinding
import com.xm.test.myfilemaster.databinding.ActivityMainBinding
import com.xm.test.myfilemaster.databinding.ResultLayoutBinding
import com.xm.test.myfile.antivirus.AntivirusActivity
import com.xm.test.myfile.databinding.ResultLayoutBinding
class ResultPageActivity : ComponentActivity() {
......
package com.xm.test.myfilemaster.activity
package com.xm.test.myfile.activity
import android.os.Bundle
import android.widget.ListView
import com.kongzue.dialogx.dialogs.WaitDialog
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.base.BaseActivity
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
import com.xm.test.myfile.R
import com.xm.test.myfile.base.BaseActivity
import com.xm.test.myfile.model.FileBean
import com.xm.test.myfile.util.FileUtil
class ScanEmptyFilesActivity : BaseActivity() {
......
package com.xm.test.myfilemaster.activity
package com.xm.test.myfile.activity
import android.os.Bundle
import android.view.View
import android.widget.ListView
import com.kongzue.dialogx.dialogs.WaitDialog
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.base.BaseActivity
import com.xm.test.myfilemaster.databinding.ActivityScanLargeFilesBinding
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
import com.xm.test.myfile.R
import com.xm.test.myfile.base.BaseActivity
import com.xm.test.myfile.model.FileBean
import com.xm.test.myfile.util.FileUtil
class ScanLargeFilesActivity : BaseActivity() {
......
package com.xm.test.myfilemaster.activity
package com.xm.test.myfile.activity
import android.content.Intent
import android.content.pm.PackageManager
......@@ -11,9 +11,9 @@ import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.isVisible
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
import com.xm.test.myfile.R
import com.xm.test.myfile.adapter.ScanResultAdapter
import com.xm.test.myfile.view.CustomDialog
class ScanResultActivity : AppCompatActivity() {
......
package com.xm.test.myfilemaster.activity
package com.xm.test.myfile.activity
import android.os.Bundle
import android.util.Log
......@@ -11,20 +11,15 @@ import android.widget.RelativeLayout
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.isVisible
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.RecyclerView
import com.cloud.cleanjunksdk.similar.PicInfo
import com.cloud.cleanjunksdk.similar.PicSimilarInfo
import com.cloud.cleanjunksdk.task.SimilarScanCallBack
import com.trustlook.sdk.data.AppInfo
import com.xm.test.myfilemaster.MyApplication
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.adapter.ImageItemAdapter
import com.xm.test.myfilemaster.adapter.SimilarBeanAdapter
import com.xm.test.myfilemaster.base.BaseActivity
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.view.CustomDialog
import com.xm.test.myfile.MyApplication
import com.xm.test.myfile.R
import com.xm.test.myfile.adapter.SimilarBeanAdapter
import com.xm.test.myfile.model.FileBean
import com.xm.test.myfile.view.CustomDialog
import java.io.File
class SimilarImagesActivity : AppCompatActivity(), OnClickListener, SimilarBeanAdapter.RefreshNumberText{
......
package com.xm.test.myfilemaster.ad
package com.xm.test.myfile.ad
import android.util.Base64
import java.security.SecureRandom
......@@ -7,7 +7,6 @@ import javax.crypto.spec.GCMParameterSpec
import javax.crypto.spec.SecretKeySpec
object AESHelper {
private const val aesKey = "ccc7okanmfth88nb"
private val cipher by lazy {
Cipher.getInstance("AES/GCM/NoPadding")
......@@ -54,6 +53,6 @@ object AESHelper {
}
private val secretKey by lazy {
SecretKeySpec(aesKey.toByteArray(), "AES")
SecretKeySpec(ConfigHelper.aesKey.toByteArray(), "AES")
}
}
\ No newline at end of file
package com.xm.test.myfilemaster.ad
package com.xm.test.myfile.ad
import android.text.TextUtils
import com.xm.test.myfilemaster.MyApplication
import androidx.datastore.preferences.core.intPreferencesKey
import androidx.datastore.preferences.core.longPreferencesKey
import com.xm.test.myfile.MyApplication
object AdUtils {
......@@ -18,11 +20,11 @@ object AdUtils {
if (TextUtils.equals(adEntity.type, "interstitial")) {
val isOrganic = UserChancelEx.isOrganicUser()
if (isOrganic) {
if (!canNextTime("interstitial", ComUtils.getComConfig().nature_insert_interval)) {
if (!canNextTime("interstitial", ComUtils.getGlobalConfig().nature_insert_interval)) {
return false
}
} else {
if (!canNextTime("interstitial", ComUtils.getComConfig().buy_insert_interval)) {
if (!canNextTime("interstitial", ComUtils.getGlobalConfig().buy_insert_interval)) {
return false
}
}
......@@ -31,7 +33,8 @@ object AdUtils {
return false
}
val adNum = MyApplication.fContext.queryDataStoreBlock(getIntString(slot + "_ad_show_num") , 0)
val adNum =
MyApplication.fContext.queryDataStoreBlock(intPreferencesKey(slot + "_ad_show_num"), 0)
if (adNum >= adEntity.show_limit) {
return false
}
......@@ -45,7 +48,7 @@ object AdUtils {
* @param interval 单位分钟
*/
private fun canNextTime(key: String, interval: Int): Boolean {
val lastPushTime = MyApplication.fContext.queryDataStoreBlock(getLongKey(key), 0)
val lastPushTime = MyApplication.fContext.queryDataStoreBlock(longPreferencesKey(key), 0)
return (System.currentTimeMillis() - lastPushTime) / 1000 > interval
}
......
package com.xm.test.myfilemaster.ad
package com.xm.test.myfile.ad
/**
* 配置信息都统一在这里管理
*/
object ConfigHelper {
var gid = ""
// 以上默认即可,以下需要手动配置
// 域名
// 密钥
const val aesKey = "wlvwkqj5d9d89l5g"
// 测试域名
const val eventUrl = "https://rp.expert3326.xyz"
const val apiUrl = "https://api.expert3326.xyz"
// 正式包名
const val packageName = "com.xm.test.myfilemaster"
//测试包名
const val packageName = "com.xm.test.myfilemaster"
// // 继承自 BaseSplashActivity 的类
// val splashActivity = SplashActivity::class.java
//
// val noLoadingActivities = listOf(
// "full", // 过滤全屏广告
// "adActivity",
// splashActivity.simpleName
// // 返回前台时不跳转启动页的 activity
// )
//==========================================下面是正式的===========================================
//正式域名
// const val eventUrl = "https://rp.abdozeid369.xyz"
// const val apiUrl = "https://api.abdozeid369.xyz"
// 正式包名
// const val packageName = "com.ultrahi.managermantfile.sgatusw"
}
\ No newline at end of file
package com.xm.test.myfilemaster.ad
package com.xm.test.myfile.ad
import android.content.Context
import androidx.datastore.core.DataStore
......@@ -14,34 +14,26 @@ import kotlinx.coroutines.runBlocking
val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings")
//通用配置更新时间
val COMMON_CONFIG_UPDATE_TIME_KEY = longPreferencesKey("common_config_update_time")
val INSTALL_INFO = stringPreferencesKey("install_info_source")
//网络获取的配置
val NET_CONFIG_KEY = stringPreferencesKey("net_config")
//用户来源信息
val INSTALL_INFO_KEY = stringPreferencesKey("install_info_source")
//第一次启动时间
val FIRST_LAUNCH_TIME_KEY = longPreferencesKey("install_info")
//上次与推送通知时间
val ALL_LAST_PUSH_TIME = longPreferencesKey("all_last_push_time")
fun getStringKey(string: String): Preferences.Key<String> {
return stringPreferencesKey(string)
}
val ALL_LAST_PUSH_TIME_KEY = longPreferencesKey("all_last_push_time")
fun getLongKey(string: String): Preferences.Key<Long> {
return longPreferencesKey(string)
}
fun createByActionId(actionId: Int): Preferences.Key<Long> {
return longPreferencesKey("actionId_$actionId")
}
fun getLongString(string: String): Preferences.Key<Long> {
return longPreferencesKey(string)
}
fun getIntString(string: String): Preferences.Key<Int> {
return intPreferencesKey(string)
}
suspend fun <T> Context.saveDataStore(key: Preferences.Key<T>, any: T) {
dataStore.edit { it[key] = any }
......
package com.xm.test.myfilemaster.ad
package com.xm.test.myfile.ad
import android.os.Build
import android.util.Log
......@@ -8,8 +8,8 @@ import com.blankj.utilcode.util.NetworkUtils
import com.blankj.utilcode.util.SPUtils
import com.blankj.utilcode.util.ScreenUtils
import com.trustlook.sdk.BuildConfig
import com.xm.test.myfilemaster.MyApplication
import com.xm.test.myfilemaster.ad.KokoReportHelper.isCharging
import com.xm.test.myfile.MyApplication
import com.xm.test.myfile.ad.KokoReportHelper.isCharging
import okhttp3.Call
import okhttp3.Callback
import okhttp3.MediaType.Companion.toMediaTypeOrNull
......
package com.xm.test.myfilemaster.ad
package com.xm.test.myfile.ad
import android.content.Context
import android.hardware.Sensor
import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager
import android.util.Log
import java.util.Timer
import java.util.TimerTask
import java.util.concurrent.atomic.AtomicBoolean
import kotlin.math.sqrt
import kotlin.time.Duration.Companion.seconds
import kotlin.time.DurationUnit
......
package com.xm.test.myfilemaster.ad
package com.xm.test.myfile.ad
import android.annotation.SuppressLint
import android.content.Context
......
package com.xm.test.myfilemaster.ad
package com.xm.test.myfile.ad
import android.app.Activity
import android.os.Handler
import android.os.Looper
import android.view.ViewGroup
import androidx.datastore.preferences.core.intPreferencesKey
import androidx.datastore.preferences.core.longPreferencesKey
import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdListener
import com.applovin.mediation.MaxError
......@@ -14,8 +16,8 @@ import com.applovin.mediation.nativeAds.MaxNativeAdLoader
import com.applovin.mediation.nativeAds.MaxNativeAdView
import com.applovin.sdk.AppLovinSdk
import com.blankj.utilcode.util.ActivityUtils
import com.xm.test.myfilemaster.MyApplication
import com.xm.test.myfilemaster.netSendEvent
import com.xm.test.myfile.MyApplication
import com.xm.test.myfile.netSendEvent
import org.json.JSONObject
import java.util.UUID
import java.util.concurrent.TimeUnit
......@@ -33,15 +35,15 @@ object MaxAdUtils {
private fun isOpenAdLoaded() = mOpenAd?.isReady == true
fun loadOpenAd(skip: Boolean = false, onLoad: (() -> Unit)? = null) {
if(!AppLovinSdk.getInstance(MyApplication.fContext).isInitialized){
onLoad?.invoke()
fun loadOpenAd(skip: Boolean = false, onLoad: ((flag: Boolean) -> Unit)? = null) {
if (!AppLovinSdk.getInstance(MyApplication.fContext).isInitialized) {
onLoad?.invoke(false)
return
}
openAdUnit = ComUtils.getAdUnitCfg().openAd?.unit_id ?: ""
mOpenAd = MaxAppOpenAd(openAdUnit, MyApplication.fContext)
mOpenAd = MaxAppOpenAd(openAdUnit, MyApplication.fContext)
if (isOpenAdLoaded() || skip) {
onLoad?.invoke()
onLoad?.invoke(false)
return
}
......@@ -54,7 +56,7 @@ object MaxAdUtils {
object : MaxAdListener {
override fun onAdLoaded(p0: MaxAd) {
openLoadTime = System.currentTimeMillis()
onLoad?.invoke()
onLoad?.invoke(true)
maxAdPullReport(p0, "openAd", reqId = reqId)
}
......@@ -65,7 +67,7 @@ object MaxAdUtils {
override fun onAdClicked(p0: MaxAd) {}
override fun onAdLoadFailed(p0: String, p1: MaxError) {
onLoad?.invoke()
onLoad?.invoke(false)
maxAdPullReport(null, "AppOpenAd", p1.message)
}
......@@ -451,10 +453,16 @@ object MaxAdUtils {
// val nums=SPUtils.getInstance().getInt("${key}_ad_show_num", 0)
// SPUtils.getInstance().put("${key}_ad_show_num", nums+1)
MyApplication.fContext.saveDataStoreBlock(getLongString(key), System.currentTimeMillis())
MyApplication.fContext.saveDataStoreBlock(
longPreferencesKey(key),
System.currentTimeMillis()
)
val adNum =
MyApplication.fContext.queryDataStoreBlock(getIntString("${key}_ad_show_num"), 0)
MyApplication.fContext.saveDataStoreBlock(getIntString("${key}_ad_show_num"), adNum + 1)
MyApplication.fContext.queryDataStoreBlock(intPreferencesKey("${key}_ad_show_num"), 0)
MyApplication.fContext.saveDataStoreBlock(
intPreferencesKey("${key}_ad_show_num"),
adNum + 1
)
}
}
\ No newline at end of file
package com.xm.test.myfilemaster.ad
package com.xm.test.myfile.ad
import com.xm.test.myfilemaster.MyApplication
import com.xm.test.myfilemaster.ad.bean.PushCfg
import com.xm.test.myfile.MyApplication
import com.xm.test.myfile.ad.bean.PushCfg
object PushManager {
......@@ -21,7 +21,7 @@ object PushManager {
* @param interval 单位分钟
*/
fun canPushNextTime(interval: Int): Boolean {
val lastPushTime = MyApplication.fContext.queryDataStoreBlock(ALL_LAST_PUSH_TIME, 0)
val lastPushTime = MyApplication.fContext.queryDataStoreBlock(ALL_LAST_PUSH_TIME_KEY, 0)
return (System.currentTimeMillis() - lastPushTime) / 1000 > interval
}
......
package com.xm.test.myfilemaster.ad
package com.xm.test.myfile.ad
import android.content.Context
import android.telephony.TelephonyManager
import com.xm.test.myfilemaster.MyApplication
import com.xm.test.myfile.MyApplication
/**
* 判断用户渠道的方法
......@@ -35,7 +35,7 @@ object UserChancelEx {
* 是否是自然用户
*/
fun isOrganicUser(): Boolean {
val source: String = MyApplication.fContext.queryDataStoreBlock(INSTALL_INFO, "")//是存储的installReferrer
val source: String = MyApplication.fContext.queryDataStoreBlock(INSTALL_INFO_KEY, "")//是存储的installReferrer
return !(source.contains("gclid") || source.contains("facebook"))
}
......
package com.xm.test.myfilemaster.ad.bean
package com.xm.test.myfile.ad.bean
data class AdUnitCfg(
val banner: AdUnitEntity,
......@@ -8,7 +8,7 @@ data class AdUnitCfg(
val interAd: AdUnitEntity
) {
data class AdUnitEntity(
val unit_id: String = "wwwsss"
val unit_id: String = "1232323"
)
}
package com.xm.test.myfilemaster.ad.bean
package com.xm.test.myfile.ad.bean
/**
* 广告位配置
*/
/**
* 广告位配置
*/
data class AdsCfg(
val banner: AdEntity,
val interstitial: AdEntity,
val rewardAd: AdEntity,
val splash: AdEntity,
val ad_open: AdEntity
val splash_slot: AdEntity,
val interstitial_slot: AdEntity,
val native_slot: AdEntity,
val banner_slot: AdEntity,
val rewardAd_slot: AdEntity,
) {
/**
......@@ -19,8 +24,7 @@ data class AdsCfg(
var is_show: Int = 31,//是否展示
var show_interval: Int = 0,//展示间隔
var new_user_avoid_time: Int = 0,//新用户避免开启
var unit_id: String = "12312443123",
var type: String = "3",
var type: String = "",
var open_ad_is_show: Int = 31,
var loading_page_time: Int = 5,
var show_limit: Int = 40
......
package com.xm.test.myfilemaster.ad.bean
package com.xm.test.myfile.ad.bean
/**
* 广告配置数据
*/
data class ConfigureData(
val ads_cfg: AdsCfg,
......
package com.xm.test.myfilemaster.ad.bean
package com.xm.test.myfile.ad.bean
/**
* 功能和场景的推送配置
......
package com.xm.test.myfilemaster.adapter
package com.xm.test.myfile.adapter
import android.content.Context
import android.util.SparseBooleanArray
......@@ -12,10 +12,10 @@ import android.widget.LinearLayout
import android.widget.ListView
import android.widget.RelativeLayout
import android.widget.TextView
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.model.CleanBean
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
import com.xm.test.myfile.R
import com.xm.test.myfile.model.CleanBean
import com.xm.test.myfile.model.FileBean
import com.xm.test.myfile.util.FileUtil
class CleanAdapter(
fileBeanList: ArrayList<CleanBean>,
......
package com.xm.test.myfilemaster.adapter
package com.xm.test.myfile.adapter
import android.util.Log
import android.util.SparseBooleanArray
......@@ -6,11 +6,11 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.databinding.CleanListItemLayoutBinding
import com.xm.test.myfilemaster.databinding.FilesItemLayoutBinding
import com.xm.test.myfilemaster.model.CleanBean
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfile.R
import com.xm.test.myfile.databinding.CleanListItemLayoutBinding
import com.xm.test.myfile.databinding.FilesItemLayoutBinding
import com.xm.test.myfile.model.CleanBean
import com.xm.test.myfile.model.FileBean
class CleanAdapter2(mIClean: IClean) : RecyclerView.Adapter<CleanAdapter2.AAA>() {
......
package com.xm.test.myfilemaster.adapter
package com.xm.test.myfile.adapter
import android.content.Context
import android.util.SparseBooleanArray
......@@ -9,9 +9,9 @@ import android.widget.BaseAdapter
import android.widget.CheckBox
import android.widget.ImageView
import android.widget.TextView
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
import com.xm.test.myfile.R
import com.xm.test.myfile.model.FileBean
import com.xm.test.myfile.util.FileUtil
class FilesItemViewAdapter(
mItemFileList: List<FileBean>, mContext: Context,
......
package com.xm.test.myfilemaster.adapter
package com.xm.test.myfile.adapter
import android.content.Context
import android.graphics.BitmapFactory
......@@ -14,10 +14,10 @@ import android.widget.GridView
import android.widget.ImageView
import android.widget.TextView
import com.cloud.cleanjunksdk.similar.PicSimilarInfo
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.SimilarImagesActivity
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
import com.xm.test.myfile.R
import com.xm.test.myfile.activity.SimilarImagesActivity
import com.xm.test.myfile.model.FileBean
import com.xm.test.myfile.util.FileUtil
class ImageItemAdapter(mContext: Context
, mDataList: ArrayList<ArrayList<FileBean>>): BaseAdapter() {
......
package com.xm.test.myfilemaster.adapter
package com.xm.test.myfile.adapter
import android.content.Context
import android.util.SparseBooleanArray
......@@ -9,10 +9,10 @@ import android.widget.BaseAdapter
import android.widget.CheckBox
import android.widget.ImageView
import com.bumptech.glide.Glide
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.MediaActivity
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
import com.xm.test.myfile.R
import com.xm.test.myfile.activity.MediaActivity
import com.xm.test.myfile.model.FileBean
import com.xm.test.myfile.util.FileUtil
class MediaAdapter(
mListData: ArrayList<FileBean>,
......
package com.xm.test.myfilemaster.adapter
package com.xm.test.myfile.adapter
import android.annotation.SuppressLint
import android.content.Context
import android.util.SparseBooleanArray
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.CheckBox
import android.widget.ImageView
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.MediaActivity
import com.xm.test.myfilemaster.databinding.ItemImageVideoBinding
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
import com.xm.test.myfile.R
import com.xm.test.myfile.databinding.ItemImageVideoBinding
import com.xm.test.myfile.model.FileBean
class MediaAdapter2 : RecyclerView.Adapter<MediaAdapter2.CCC>() {
......
package com.xm.test.myfilemaster.adapter
package com.xm.test.myfile.adapter
import android.content.Context
import android.content.pm.PackageManager
......@@ -9,7 +9,7 @@ import android.widget.BaseAdapter
import android.widget.ImageView
import android.widget.TextView
import com.trustlook.sdk.data.AppInfo
import com.xm.test.myfilemaster.R
import com.xm.test.myfile.R
class ScanResultAdapter(dataList: ArrayList<AppInfo>,
context: Context) : BaseAdapter() {
......
package com.xm.test.myfilemaster.adapter
package com.xm.test.myfile.adapter
import android.content.Context
import android.util.Log
......@@ -8,13 +8,11 @@ import android.view.View
import android.view.ViewGroup
import android.widget.GridView
import androidx.recyclerview.widget.RecyclerView
import com.cloud.cleanjunksdk.similar.PicInfo
import com.cloud.cleanjunksdk.similar.PicSimilarInfo
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.SimilarImagesActivity
import com.xm.test.myfilemaster.databinding.ImageItemLayoutBinding
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
import com.xm.test.myfile.R
import com.xm.test.myfile.activity.SimilarImagesActivity
import com.xm.test.myfile.databinding.ImageItemLayoutBinding
import com.xm.test.myfile.model.FileBean
import com.xm.test.myfile.util.FileUtil
class SimilarBeanAdapter(context: Context, refreshNumListener: RefreshNumberText) : RecyclerView.Adapter<SimilarBeanAdapter.AA>() {
private val list = arrayListOf<ArrayList<FileBean>>()
......
package com.xm.test.myfilemaster.adapter
package com.xm.test.myfile.adapter
import android.content.Context
import android.graphics.BitmapFactory
import android.graphics.drawable.BitmapDrawable
import android.util.SparseBooleanArray
import android.view.LayoutInflater
import android.view.View
......@@ -11,11 +9,10 @@ import android.widget.BaseAdapter
import android.widget.CheckBox
import android.widget.ImageView
import com.bumptech.glide.Glide
import com.cloud.cleanjunksdk.similar.PicInfo
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.SimilarImagesActivity
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
import com.xm.test.myfile.R
import com.xm.test.myfile.activity.SimilarImagesActivity
import com.xm.test.myfile.model.FileBean
import com.xm.test.myfile.util.FileUtil
class SimilarGridAdapter(
list: MutableList<FileBean>, context: Context,
......
package com.xm.test.myfilemaster.antivirus
package com.xm.test.myfile.antivirus
import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
import android.os.Bundle
......@@ -13,9 +12,9 @@ import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import com.trustlook.sdk.cloudscan.CloudScanListener
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
import com.xm.test.myfile.MyApplication
import com.xm.test.myfile.R
import com.xm.test.myfile.activity.ScanResultActivity
class AntivirusActivity : AppCompatActivity() {
......
package com.xm.test.myfilemaster.base
package com.xm.test.myfile.base
import android.content.Context
import android.util.AttributeSet
......
package com.xm.test.myfilemaster.base
package com.xm.test.myfile.base
import android.content.Intent
import android.net.Uri
......@@ -17,16 +17,16 @@ import androidx.core.content.FileProvider
import androidx.core.view.isVisible
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import com.xm.test.myfilemaster.MyApplication
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.BaseActivityViewModel
import com.xm.test.myfilemaster.activity.HomeActivity
import com.xm.test.myfilemaster.activity.MoveOrCopyActivity
import com.xm.test.myfilemaster.adapter.FilesItemViewAdapter
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
import com.xm.test.myfilemaster.util.PermissionUtil
import com.xm.test.myfilemaster.view.CustomDialog
import com.xm.test.myfile.MyApplication
import com.xm.test.myfile.R
import com.xm.test.myfile.activity.BaseActivityViewModel
import com.xm.test.myfile.activity.HomeActivity
import com.xm.test.myfile.activity.MoveOrCopyActivity
import com.xm.test.myfile.adapter.FilesItemViewAdapter
import com.xm.test.myfile.model.FileBean
import com.xm.test.myfile.util.FileUtil
import com.xm.test.myfile.util.PermissionUtil
import com.xm.test.myfile.view.CustomDialog
import java.io.File
abstract class BaseActivity : BaseAbsView(), BaseActivityListener{
......
package com.xm.test.myfilemaster.base
package com.xm.test.myfile.base
interface BaseActivityListener {
fun setTitle(str: String)
......
package com.xm.test.myfilemaster.fragment
package com.xm.test.myfile.fragment
import android.content.Intent
import android.os.Bundle
......@@ -8,14 +8,14 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.GridView
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.FileManagerActivity
import com.xm.test.myfilemaster.activity.MediaActivity
import com.xm.test.myfilemaster.adapter.MediaAdapter
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.MediaUtil
import com.xm.test.myfilemaster.util.PermissionUtil
import com.xm.test.myfilemaster.view.CustomDialog
import com.xm.test.myfile.R
import com.xm.test.myfile.activity.FileManagerActivity
import com.xm.test.myfile.activity.MediaActivity
import com.xm.test.myfile.adapter.MediaAdapter
import com.xm.test.myfile.model.FileBean
import com.xm.test.myfile.util.MediaUtil
import com.xm.test.myfile.util.PermissionUtil
import com.xm.test.myfile.view.CustomDialog
class FileManagerFragment : Fragment(), View.OnClickListener {
private lateinit var mView: View
......
package com.xm.test.myfilemaster.fragment
package com.xm.test.myfile.fragment
import androidx.lifecycle.ViewModel
......
package com.xm.test.myfilemaster.fragment
package com.xm.test.myfile.fragment
import android.app.ActivityManager
import android.content.Context
......@@ -15,15 +15,15 @@ import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.ProgressBar
import android.widget.TextView
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.BatteryActivity
import com.xm.test.myfilemaster.activity.CleanActivity
import com.xm.test.myfilemaster.activity.ScanEmptyFilesActivity
import com.xm.test.myfilemaster.activity.ScanLargeFilesActivity
import com.xm.test.myfilemaster.activity.SimilarImagesActivity
import com.xm.test.myfilemaster.antivirus.AntivirusActivity
import com.xm.test.myfilemaster.util.PermissionUtil
import com.xm.test.myfilemaster.view.CustomDialog
import com.xm.test.myfile.R
import com.xm.test.myfile.activity.BatteryActivity
import com.xm.test.myfile.activity.CleanActivity
import com.xm.test.myfile.activity.ScanEmptyFilesActivity
import com.xm.test.myfile.activity.ScanLargeFilesActivity
import com.xm.test.myfile.activity.SimilarImagesActivity
import com.xm.test.myfile.antivirus.AntivirusActivity
import com.xm.test.myfile.util.PermissionUtil
import com.xm.test.myfile.view.CustomDialog
class HomeFragment : Fragment(), OnClickListener{
private lateinit var mView: View
......@@ -36,7 +36,7 @@ class HomeFragment : Fragment(), OnClickListener{
private lateinit var mMemoryUseText: TextView
private lateinit var mMemoryUseProgress: ProgressBar
private lateinit var mBatteryInfo: View
private lateinit var mCirclePgBar: com.xm.test.myfilemaster.view.CirclePgBar
private lateinit var mCirclePgBar: com.xm.test.myfile.view.CirclePgBar
companion object {
fun newInstance() = HomeFragment()
}
......@@ -80,7 +80,7 @@ class HomeFragment : Fragment(), OnClickListener{
mScanEmptyFiles.setOnClickListener(this)
mBatteryInfo.setOnClickListener(this)
mView.findViewById<com.xm.test.myfilemaster.view.CirclePgBar>(R.id.progress_circular).setOnClickListener(this)
mView.findViewById<com.xm.test.myfile.view.CirclePgBar>(R.id.progress_circular).setOnClickListener(this)
mView.findViewById<View>(R.id.home_clean_btn).setOnClickListener(this)
mView.findViewById<View>(R.id.antivirus_btn).setOnClickListener (this)
......
package com.xm.test.myfilemaster.fragment
package com.xm.test.myfile.fragment
import androidx.lifecycle.ViewModel
......
package com.xm.test.myfilemaster.fragment
package com.xm.test.myfile.fragment
import android.content.Intent
import android.net.Uri
......@@ -22,17 +22,17 @@ import androidx.core.view.isVisible
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import com.kongzue.dialogx.dialogs.WaitDialog
import com.xm.test.myfilemaster.MyApplication
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.BaseActivityViewModel
import com.xm.test.myfilemaster.activity.HomeActivity
import com.xm.test.myfilemaster.activity.MoveOrCopyActivity
import com.xm.test.myfilemaster.adapter.FilesItemViewAdapter
import com.xm.test.myfilemaster.base.BaseActivity
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
import com.xm.test.myfilemaster.util.PermissionUtil
import com.xm.test.myfilemaster.view.CustomDialog
import com.xm.test.myfile.MyApplication
import com.xm.test.myfile.R
import com.xm.test.myfile.activity.BaseActivityViewModel
import com.xm.test.myfile.activity.HomeActivity
import com.xm.test.myfile.activity.MoveOrCopyActivity
import com.xm.test.myfile.adapter.FilesItemViewAdapter
import com.xm.test.myfile.base.BaseActivity
import com.xm.test.myfile.model.FileBean
import com.xm.test.myfile.util.FileUtil
import com.xm.test.myfile.util.PermissionUtil
import com.xm.test.myfile.view.CustomDialog
import java.io.File
class InternalStorageFragment : Fragment(), View.OnClickListener {
......
package com.xm.test.myfilemaster.model
package com.xm.test.myfile.model
data class GlobalConfig(
val cacheTime: Int,
......
package com.xm.test.myfilemaster.model
package com.xm.test.myfile.model
import java.io.Serializable
......
package com.xm.test.myfilemaster.model
package com.xm.test.myfile.model
import android.graphics.Bitmap
import android.graphics.drawable.Drawable
......
package com.xm.test.myfilemaster.model
package com.xm.test.myfile.model
class FilesItemBean{
var resId: Int = 0
......
package com.xm.test.myfilemaster.notification
package com.xm.test.myfile.notification
import android.app.ActivityManager
import android.content.BroadcastReceiver
......@@ -6,17 +6,17 @@ import android.content.Context
import android.content.Intent
import android.os.BatteryManager
import android.util.Log
import com.xm.test.myfilemaster.MyApplication
import com.xm.test.myfilemaster.ad.ComUtils
import com.xm.test.myfilemaster.ad.PushManager
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_BOOST_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_CHARGE
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_INSTALL_PACKAGE_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_LOW_BATTERY_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_LOW_JUNK_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_UNINSTALL_PACKAGE_PUSH
import com.xm.test.myfilemaster.notification.NotificationHelper.postNotification
import com.xm.test.myfilemaster.common.notification.NotificationEx
import com.xm.test.myfile.MyApplication
import com.xm.test.myfile.ad.ComUtils
import com.xm.test.myfile.ad.PushManager
import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_BOOST_PUSH
import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_CHARGE
import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_INSTALL_PACKAGE_PUSH
import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_LOW_BATTERY_PUSH
import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_LOW_JUNK_PUSH
import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_UNINSTALL_PACKAGE_PUSH
import com.xm.test.myfile.notification.NotificationHelper.postNotification
import com.xm.test.myfile.common.notification.NotificationEx
import java.io.File
......
package com.xm.test.myfilemaster.common.notification
package com.xm.test.myfile.common.notification
import com.xm.test.myfilemaster.ad.ComUtils
import com.xm.test.myfile.ad.ComUtils
object NotificationEx {
......
package com.xm.test.myfilemaster.notification
package com.xm.test.myfile.notification
import android.annotation.SuppressLint
import android.app.NotificationChannel
......@@ -12,26 +12,26 @@ import android.os.Build
import android.widget.RemoteViews
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import com.xm.test.myfilemaster.MyApplication
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.HomeActivity
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_BATTERY_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_BIGFILE_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_BOOST_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_CHARGE
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_COOL_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_DUPLICATE_FILE_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_INSTALL_PACKAGE_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_JUNK_CLEAN_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_LOW_BATTERY_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_LOW_JUNK_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_PHOTO_CLEAN_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_UNINSTALL_PACKAGE_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_VIDEO_CLEAN_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_VIRUS_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_WIFI_PUSH
import com.xm.test.myfilemaster.ad.createByActionId
import com.xm.test.myfilemaster.ad.saveDataStoreBlock
import com.xm.test.myfile.MyApplication
import com.xm.test.myfile.R
import com.xm.test.myfile.activity.HomeActivity
import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_BATTERY_PUSH
import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_BIGFILE_PUSH
import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_BOOST_PUSH
import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_CHARGE
import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_COOL_PUSH
import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_DUPLICATE_FILE_PUSH
import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_INSTALL_PACKAGE_PUSH
import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_JUNK_CLEAN_PUSH
import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_LOW_BATTERY_PUSH
import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_LOW_JUNK_PUSH
import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_PHOTO_CLEAN_PUSH
import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_UNINSTALL_PACKAGE_PUSH
import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_VIDEO_CLEAN_PUSH
import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_VIRUS_PUSH
import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_WIFI_PUSH
import com.xm.test.myfile.ad.createByActionId
import com.xm.test.myfile.ad.saveDataStoreBlock
import kotlin.random.Random
/**
......
package com.xm.test.myfilemaster.util
package com.xm.test.myfile.util
import android.content.Context
import android.content.Intent
......
package com.xm.test.myfilemaster.util
package com.xm.test.myfile.util
import android.annotation.SuppressLint
import android.content.Context
......@@ -10,7 +10,7 @@ import android.os.Environment
import android.provider.MediaStore
import android.util.Log
import android.util.TypedValue
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfile.model.FileBean
import java.io.File
import java.io.IOException
import java.text.SimpleDateFormat
......
package com.xm.test.myfilemaster.util
package com.xm.test.myfile.util
import android.app.Application
import com.bumptech.glide.annotation.GlideModule
......
package com.xm.test.myfilemaster.util
package com.xm.test.myfile.util
import android.annotation.SuppressLint
import android.content.ContentResolver
......@@ -9,7 +9,7 @@ import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
import android.provider.MediaStore
import android.util.TypedValue
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfile.model.FileBean
import java.io.File
object MediaUtil {
......
package com.xm.test.myfilemaster.util
package com.xm.test.myfile.util
import android.Manifest
import android.content.Context
......@@ -13,7 +13,7 @@ import androidx.core.app.ActivityCompat
import androidx.fragment.app.FragmentActivity
import com.permissionx.guolindev.PermissionX
import com.permissionx.guolindev.callback.RequestCallback
import com.xm.test.myfilemaster.activity.HomeActivity
import com.xm.test.myfile.activity.HomeActivity
object PermissionUtil {
......
package com.xm.test.myfilemaster.util
package com.xm.test.myfile.util
import android.bluetooth.BluetoothAdapter
import android.content.ContentResolver
......
package com.xm.test.myfilemaster.view;
package com.xm.test.myfile.view;
import android.content.Context;
import android.graphics.Canvas;
......@@ -7,7 +7,7 @@ import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;
import com.xm.test.myfilemaster.R;
import com.xm.test.myfile.R;
/**
......
package com.xm.test.myfilemaster.view
package com.xm.test.myfile.view
import android.app.Dialog
import android.content.Context
......@@ -9,7 +9,7 @@ import android.os.Bundle
import android.view.View
import android.widget.EditText
import android.widget.TextView
import com.xm.test.myfilemaster.R
import com.xm.test.myfile.R
class CustomDialog(context: Context?) : Dialog(context!!), View.OnClickListener{
private lateinit var mEdit: EditText
......
package com.xm.test.myfilemaster.view
package com.xm.test.myfile.view
import android.animation.ValueAnimator
import android.content.Context
......@@ -8,7 +8,7 @@ import android.graphics.Canvas
import android.graphics.Matrix
import android.util.AttributeSet
import android.view.View
import com.xm.test.myfilemaster.R
import com.xm.test.myfile.R
class RotatingImageView @JvmOverloads constructor(
context: Context,
......
package com.xm.test.myfilemaster
import android.annotation.SuppressLint
import android.content.Intent
import android.os.Bundle
import android.os.Handler
import android.view.View
import android.widget.ProgressBar
import androidx.appcompat.app.AppCompatActivity
import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdListener
import com.applovin.mediation.MaxError
import com.applovin.mediation.ads.MaxInterstitialAd
import com.applovin.sdk.AppLovinMediationProvider
import com.applovin.sdk.AppLovinSdk
import com.applovin.sdk.AppLovinSdkInitializationConfiguration
import com.kongzue.dialogx.DialogX
import com.xm.test.myfilemaster.activity.HomeActivity
import com.xm.test.myfilemaster.notification.NotificationHelper
import com.xm.test.myfilemaster.notification.NotificationHelper.postNotification
import com.xm.test.myfilemaster.util.UrlManager
import java.util.concurrent.TimeUnit
class MainActivity : AppCompatActivity(), MaxAdListener {
private lateinit var mProgressBar: ProgressBar
private lateinit var interstitialAd: MaxInterstitialAd
private var retryAttempt = 0.0
@SuppressLint("SuspiciousIndentation")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
DialogX.init(this)
mProgressBar = findViewById(R.id.main_page_progress)
initView()
}
private fun initView() {
val isAgreeAppPage = MyApplication.mSp?.getBoolean("isAgreeAppPage", false) ?: false
if (isAgreeAppPage){
startAppPage()
}
// Create the initialization configuration
// Perform any additional configuration/setting changes
findViewById<View>(R.id.start_app_btn).setOnClickListener {
val edit = MyApplication.mSp?.edit()
edit?.putBoolean("isAgreeAppPage", true)
edit?.apply()
startAppPage()
}
}
private fun startAppPage() {
findViewById<View>(R.id.start_rules_layout).visibility = View.GONE
val initConfig = AppLovinSdkInitializationConfiguration.builder(UrlManager.AD_APP_KEY, this)
.setMediationProvider(AppLovinMediationProvider.MAX)
.build();
val handler = Handler()
var count: Int = 0
val runnable = object : Runnable {
override fun run() {
if (count <= 100) {
runOnUiThread {
mProgressBar.setProgress(count)
count += 10
}
handler.postDelayed(this, 300)
} else {
startVi()
}
}
}
AppLovinSdk.getInstance(this).initialize(initConfig) {
// Start loading ads
handler.postDelayed(runnable, 300)
}
}
fun startVi() {
startActivity(Intent(this, HomeActivity::class.java))
finish()
}
fun createInterstitialAd() {
interstitialAd = MaxInterstitialAd(UrlManager.AD_UNIT_ID, this)
interstitialAd.setListener(this)
// Load the first ad
interstitialAd.loadAd()
}
// MAX Ad Listener
override fun onAdLoaded(maxAd: MaxAd) {
// Interstitial ad is ready to be shown. interstitialAd.isReady() will now return 'true'
// Reset retry attempt
retryAttempt = 0.0
}
override fun onAdLoadFailed(adUnitId: String, error: MaxError) {
// Interstitial ad failed to load
// AppLovin recommends that you retry with exponentially higher delays up to a maximum delay (in this case 64 seconds)
retryAttempt++
val delayMillis =
TimeUnit.SECONDS.toMillis(Math.pow(2.0, Math.min(6.0, retryAttempt)).toLong())
Handler().postDelayed({ interstitialAd.loadAd() }, delayMillis)
}
override fun onAdDisplayFailed(ad: MaxAd, error: MaxError) {
// Interstitial ad failed to display. AppLovin recommends that you load the next ad.
interstitialAd.loadAd()
}
override fun onAdDisplayed(maxAd: MaxAd) {}
override fun onAdClicked(maxAd: MaxAd) {}
override fun onAdHidden(maxAd: MaxAd) {
// Interstitial ad is hidden. Pre-load the next ad
interstitialAd.loadAd()
}
}
\ No newline at end of file
package com.xm.test.myfilemaster.ad
fun loadSatisfyLimit():Boolean{
return true
}
fun showSatisfyLimit():Boolean{
return true
}
fun recordShowCount(){
}
\ No newline at end of file
package com.xm.test.myfilemaster.ad.bean
import com.xm.test.myfilemaster.ad.bean.ConfigureData
data class ZxhyConfigure(
val data: ConfigureData
)
package com.xm.test.myfilemaster.util
import com.google.gson.Gson
import com.xm.test.myfilemaster.model.AdConfigData
import okhttp3.OkHttpClient
import okhttp3.Request
object HttpRequest {
fun getMaxAdConfig(){
Thread(Runnable {
val okHttpClient = OkHttpClient()
val request = Request.Builder()
.url(UrlManager.URL_)
.build()
val response = okHttpClient.newCall(request).execute()
if (response.isSuccessful){
Gson().fromJson(response.body.toString(), AdConfigData::class.java)
}
}).start()
}
}
\ No newline at end of file
package com.xm.test.myfilemaster.util
object UrlManager {
// const val AD_APP_KEY = "GGPreND6SRmCt1zJgn5faiLGD8c2PVGPLgPpSg7cHanVTud1DhtuI9MmteTqlEviaJ57WnxW68kQDaATJ5z3cW"
const val AD_APP_KEY = "uxm7okanmfth88nb"
const val AD_UNIT_ID = ""
const val TEST_PLACEMENT_HERE = ""
const val URL_ = "https://api.magicfolder.xyz/cccfig?pkg=testonline"
}
\ No newline at end of file
......@@ -3,62 +3,68 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:theme="@style/Theme.AppCompat.DayNight.NoActionBar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:theme="@style/Theme.AppCompat.DayNight.NoActionBar"
tools:context=".MainActivity">
<LinearLayout
android:id="@+id/ll_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:orientation="vertical"
android:visibility="gone">
<ImageView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:src="@mipmap/launch_icon" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="0dp"
android:orientation="vertical"
android:layout_gravity="center"
android:layout_weight="1">
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:textStyle="bold"
android:layout_gravity="center"
android:textSize="14dp"
android:textColor="@color/black"
android:gravity="bottom"
android:layout_marginBottom="12dp"
android:text="This process may contain advertisements"/>
android:layout_weight="1"
android:gravity="bottom"
android:text="This process may contain advertisements"
android:textColor="@color/black"
android:textSize="14dp"
android:textStyle="bold"
tools:ignore="TextSizeCheck" />
<ProgressBar
android:id="@+id/main_page_progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="4dp"
style="?android:attr/progressBarStyleHorizontal"
android:layout_alignParentStart="true"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:layout_alignParentStart="true"
android:max="100"
android:indeterminate="false"
android:max="100"
android:progress="0"
android:progressDrawable="@drawable/progress_bg"/>
android:progressDrawable="@drawable/progress_bg" />
<TextView
android:textColor="@color/black"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_gravity="center"
android:layout_marginTop="12dp"
android:layout_weight="1"
android:layout_gravity="center"
android:text="Please wait..."
android:textColor="@color/black"
android:textSize="14dp"
android:text="Please wait..."/>
tools:ignore="TextSizeCheck" />
</LinearLayout>
</LinearLayout>
......@@ -66,13 +72,9 @@
android:id="@+id/start_rules_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include layout="@layout/start_app_layout"/>
</RelativeLayout>
<!-- <com.applovin.mediation.ads.MaxAdView-->
<!-- android:id="@+id/main_max_ad_view"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"/>-->
<include layout="@layout/start_app_layout" />
</RelativeLayout>
</RelativeLayout>
\ No newline at end of file
......@@ -37,7 +37,7 @@
android:button="@null"
android:drawableEnd="@drawable/bg_item_switch_selector" />
<com.xm.test.myfilemaster.view.RotatingImageView
<com.xm.test.myfile.view.RotatingImageView
android:id="@+id/clean_item_more"
android:layout_width="30dp"
android:layout_height="30dp"
......
......@@ -149,7 +149,7 @@
<!-- android:visibility="gone"-->
<!-- app:lottie_loop="true"/>-->
<com.xm.test.myfilemaster.view.CirclePgBar
<com.xm.test.myfile.view.CirclePgBar
android:id="@+id/progress_circular"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
......
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="#6F98ED"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:background="#6F98ED">
<LinearLayout
android:id="@+id/start_rules"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="30dp"
android:layout_width="match_parent"
android:layout_marginEnd="16dp"
android:background="@drawable/start_app_rules_shape"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/start_icon"
android:layout_gravity="center_horizontal"/>
android:layout_gravity="center_horizontal"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
android:src="@mipmap/start_icon" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="30dp"
android:text="File Manager Ultra"
android:textColor="@color/white"
android:textStyle="bold"
android:textSize="24sp"
android:layout_marginBottom="30dp"
android:text="File Manager Ultra"/>
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginStart="16dp"
android:textColor="@color/white"
android:textSize="12sp"
android:layout_marginBottom="34dp"
android:text="@string/rulos_text"/>
android:text="@string/rules_text"
android:textColor="@color/white"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:layout_marginTop="16dp"
android:layout_below="@+id/start_rules"
android:layout_width="wrap_content"
android:layout_centerHorizontal="true"
android:layout_height="wrap_content"
android:layout_below="@+id/start_rules"
android:layout_centerHorizontal="true"
android:layout_marginTop="16dp"
android:orientation="horizontal">
<TextView
android:textSize="12sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="By continuing to use it, you agree "
android:textColor="@color/white"
android:text="By continuing to use it, you agree"/>
android:textSize="12sp" />
<TextView
android:textSize="12sp"
android:id="@+id/tv_terms"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Terms of use"
android:textColor="#286EFD"
android:text="@string/terms_of_use_privacy_policy"/>
android:textSize="12sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" &amp; "
android:textColor="#286EFD"
android:textSize="12sp" />
<TextView
android:id="@+id/tv_privacy"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Privacy PoliCy"
android:textColor="#286EFD"
android:textSize="12sp" />
</LinearLayout>
<RelativeLayout
android:id="@+id/start_app_btn"
android:background="@drawable/start_app_btn_shape"
android:layout_width="224dp"
android:layout_height="36dp"
android:elevation="10dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="16dp"
android:layout_centerHorizontal="true">
android:background="@drawable/start_app_btn_shape"
android:elevation="10dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/style_background"
android:layout_centerInParent="true"
android:text="START"
android:textColor="@color/style_background"
android:textSize="19dp"
android:layout_centerInParent="true"
android:textStyle="bold"/>
android:textStyle="bold" />
</RelativeLayout>
......
......@@ -5,4 +5,5 @@
<color name="progress_background">#95B5FE</color>
<color name="style_background">#3889FD</color>
<color name="style_grey">#B2B2B2</color>
<color name="color_6185d3">#6185D3</color>
</resources>
\ No newline at end of file
<resources>
<string name="app_name">FileManager</string>
<string name="app_name">File Manager Ultra</string>
<string name="file_manager">File Manager</string>
<string name="home">Home</string>
<string name="file_manager_ultra">File Manager Ultra</string>
......@@ -27,13 +27,15 @@
<string name="go_to_settings">Go To Settings</string>
<string name="no_files_found">No Files Found</string>
<string name="view">View</string>
<!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string>
<string name="similar">%s similar</string>
<string name="turn_off_the_hotspot">Turn %s the hotspot</string>
<string name="turn_off_bluetooth">Turn %s bluetooth</string>
<string name="turn_on_auto_brightness">Turn %s auto-brightness</string>
<string name="turn_off_gps">Turn %s GPS</string>
<string name="rulos_text"><![CDATA[When you interact with our application, we may \ncollect non-personallyidentifiableinformation, \nsuch as your device model and the Android \nversion you use. A detailed list of \ntheinformation we access and collect is as \nfollows: \n- Installed applications information. \nWhen you use file manager select to clean \njunks you on your device, we may collect and \nupload your installed applications information \nto our server. We need to obtain the application \nlist on the user\'s mobile phone to allow the user to \nclean up the junk files of applications on the \nphone. We do not share your installed \napplications information with any third party. \n\n- Device information. \nWe collect device-specificinformation (such as \nyour hardware manufacturer & model,operating \nsystem version, screen size,CPUmodel, mobile]]></string>
<string name="terms_of_use_privacy_policy"><![CDATA[Terms of use & Privacy PoliCy]]></string>
<string name="rules_text"><![CDATA[When you interact with our application, we may \ncollect non-personallyidentifiableinformation, \nsuch as your device model and the Android \nversion you use. A detailed list of \ntheinformation we access and collect is as \nfollows: \n- Installed applications information. \nWhen you use file manager select to clean \njunks you on your device, we may collect and \nupload your installed applications information \nto our server. We need to obtain the application \nlist on the user\'s mobile phone to allow the user to \nclean up the junk files of applications on the \nphone. We do not share your installed \napplications information with any third party. \n\n- Device information. \nWe collect device-specificinformation (such as \nyour hardware manufacturer & model,operating \nsystem version, screen size,CPUmodel, mobile]]></string>
<string name="facebook_app_id">2080048519061251</string>
<string name="local_config_test">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</string>
<string name="local_config_office">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</string>
</resources>
\ No newline at end of file
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