Commit 7065ddef authored by wanglei's avatar wanglei

开屏广告

parent 0160f04a
...@@ -3,14 +3,17 @@ ...@@ -3,14 +3,17 @@
217e8f437c9fc4244d6e74653ac8a8c7 217e8f437c9fc4244d6e74653ac8a8c7
1be9e72506f3307ce6a9e78d26d65bd0 1be9e72506f3307ce6a9e78d26d65bd0
4df96d3bc9afd17b812e65e6c6add1ef 4df96d3bc9afd17b812e65e6c6add1ef
6e5e97b26091769e913a9c39d6919d80
974322f19d813702ea048d95288d2b8c 974322f19d813702ea048d95288d2b8c
4da578532cf0b91cb95142d4ea36afe0 4da578532cf0b91cb95142d4ea36afe0
d898644c55810f1f4ffbb7930bfc8994 d898644c55810f1f4ffbb7930bfc8994
5320e6915ea65c264b5682649c3ca647 5320e6915ea65c264b5682649c3ca647
29015bbfcc182d80e7f75bd2c38e4521 29015bbfcc182d80e7f75bd2c38e4521
ff22dbf67af979b8b3169a242d10f166 ff22dbf67af979b8b3169a242d10f166
1be23983f512930c36ba4ea218f1ff47
dd2971b0681141d57b221687791ad1bd dd2971b0681141d57b221687791ad1bd
86a0d598cde251321e21a0da4ab94065 86a0d598cde251321e21a0da4ab94065
74616804a7dc29147dfb0afe122a9fd2 74616804a7dc29147dfb0afe122a9fd2
35695de726f6044576c830bf197f36f7 35695de726f6044576c830bf197f36f7
064929c5824ad68d510310b5a26b3ef6
#Mon Apr 22 09:55:03 CST 2024 #Mon Apr 22 13:51:06 CST 2024
json=-697708880 json=-500452207
# #
#Mon Apr 22 09:55:04 CST 2024 #Mon Apr 22 13:56:35 CST 2024
7M6t_fBDFPKdlDdekL1bw1OntM7gd4Vk5yK_p7yEdl9BCKCfGZpmZMvL2LDHcuNGWIHLXPD0w_SFDDv94WMaSw=GGPreND6SRmCt1zJgn5faiLGD8c2PVGPLgPpSg7cHanVTud1DhtuI9MmteTqlEviaJ57WnxW68kQDaATJ5z3cW 7M6t_fBDFPKdlDdekL1bw1OntM7gd4Vk5yK_p7yEdl9BCKCfGZpmZMvL2LDHcuNGWIHLXPD0w_SFDDv94WMaSw=GGPreND6SRmCt1zJgn5faiLGD8c2PVGPLgPpSg7cHanVTud1DhtuI9MmteTqlEviaJ57WnxW68kQDaATJ5z3cW
sdk_analysis_plugin_version=5.2.4 sdk_analysis_plugin_version=5.2.4
set_multidex=true set_multidex=true
...@@ -9,7 +9,7 @@ applovin { ...@@ -9,7 +9,7 @@ applovin {
} }
android { android {
namespace 'com.xm.test.myfilemaster' namespace 'com.xm.test.myfile'
compileSdk 34 compileSdk 34
defaultConfig { defaultConfig {
...@@ -71,7 +71,6 @@ dependencies { ...@@ -71,7 +71,6 @@ dependencies {
def dialogx_version = "0.0.49" def dialogx_version = "0.0.49"
implementation "com.kongzue.dialogx:DialogX:${dialogx_version}" implementation "com.kongzue.dialogx:DialogX:${dialogx_version}"
// implementation 'com.github.aicoin:ImageHash:1.0.0'
implementation 'com.guolindev.permissionx:permissionx:1.7.1' implementation 'com.guolindev.permissionx:permissionx:1.7.1'
...@@ -103,4 +102,9 @@ dependencies { ...@@ -103,4 +102,9 @@ dependencies {
implementation("com.blankj:utilcodex:1.31.1") implementation("com.blankj:utilcodex:1.31.1")
implementation("androidx.datastore:datastore-preferences:1.0.0") implementation("androidx.datastore:datastore-preferences:1.0.0")
implementation("com.facebook.android:facebook-android-sdk:[8,9)")
} }
...@@ -34,11 +34,7 @@ ...@@ -34,11 +34,7 @@
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/Theme.MyDemo3" android:theme="@style/Theme.MyDemo3"
tools:targetApi="31"> tools:targetApi="31">
<activity
android:name=".activity.ImageShowActivity"
android:screenOrientation="portrait"
android:theme="@style/MediaActivityTheme"
android:exported="false" />
<activity <activity
android:name=".activity.ResultPageActivity" android:name=".activity.ResultPageActivity"
android:exported="false" android:exported="false"
...@@ -117,16 +113,26 @@ ...@@ -117,16 +113,26 @@
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true" android:exported="true"
android:theme="@style/MediaActivityTheme"
android:screenOrientation="portrait" android:screenOrientation="portrait"
android:theme="@style/MediaActivityTheme"
tools:ignore="DiscouragedApi"> tools:ignore="DiscouragedApi">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
</activity> </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是和包名绑定的 --> <!-- 病毒扫描,key是和包名绑定的 -->
<meta-data <meta-data
android:name="com.trustlook.ApiKey" 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.annotation.SuppressLint
import android.app.Application import android.app.Application
...@@ -7,31 +7,29 @@ import android.content.Intent ...@@ -7,31 +7,29 @@ import android.content.Intent
import android.content.IntentFilter import android.content.IntentFilter
import android.content.SharedPreferences import android.content.SharedPreferences
import android.util.Log 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.AppLovinMediationProvider
import com.applovin.sdk.AppLovinSdk import com.applovin.sdk.AppLovinSdk
import com.applovin.sdk.AppLovinSdkInitializationConfiguration
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.google.android.gms.ads.identifier.AdvertisingIdClient
import com.trustlook.sdk.cloudscan.CloudScanClient import com.trustlook.sdk.cloudscan.CloudScanClient
import com.xm.test.myfilemaster.ad.GravitySensorManager import com.xm.test.myfile.ad.GravitySensorManager
import com.xm.test.myfilemaster.notification.ActionBroadcast import com.xm.test.myfile.notification.ActionBroadcast
import com.xm.test.myfilemaster.util.UrlManager import java.util.Collections
import java.util.concurrent.Executors
import java.util.concurrent.atomic.AtomicBoolean
class MyApplication : Application() { class MyApplication : Application() {
private lateinit var gravitySensorManager: GravitySensorManager private lateinit var gravitySensorManager: GravitySensorManager
private val isAdsInitializeCalled = AtomicBoolean(false)
companion object { companion object {
var mCleanSdk: Clean? = null var mCleanSdk: Clean? = null
@SuppressLint("StaticFieldLeak") @SuppressLint("StaticFieldLeak")
var mCloudScan: CloudScanClient? = null var mCloudScan: CloudScanClient? = null
var mSp: SharedPreferences? = null var mSp: SharedPreferences? = null
...@@ -43,13 +41,12 @@ class MyApplication : Application() { ...@@ -43,13 +41,12 @@ class MyApplication : Application() {
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
fContext=this fContext = this
// AppLovinSdk.getInstance( this ).initializeSdk({ configuration: AppLovinSdkConfiguration -> initCleanSdk()
// { initBroadcast()
// appOpenManager = ExampleAppOpenManager(applicationContext) }
// }
// ) private fun initCleanSdk() {
// }
mSp = getSharedPreferences("fileManager", MODE_PRIVATE) mSp = getSharedPreferences("fileManager", MODE_PRIVATE)
CleanSDK.init(this, this, Region.INTL, object : CheckSdkCallback { CleanSDK.init(this, this, Region.INTL, object : CheckSdkCallback {
override fun onSuccess(p0: Clean?) { override fun onSuccess(p0: Clean?) {
...@@ -69,11 +66,48 @@ class MyApplication : Application() { ...@@ -69,11 +66,48 @@ class MyApplication : Application() {
AppLovinSdk.getInstance(this).initializeSdk { 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 = GravitySensorManager(this)
gravitySensorManager.registerListener() gravitySensorManager.registerListener()
val filter = IntentFilter() val filter = IntentFilter()
......
package com.xm.test.myfilemaster package com.xm.test.myfile
import android.os.Build import android.os.Build
import android.util.Log import android.util.Log
...@@ -6,8 +6,8 @@ import com.blankj.utilcode.util.AppUtils ...@@ -6,8 +6,8 @@ import com.blankj.utilcode.util.AppUtils
import com.blankj.utilcode.util.DeviceUtils import com.blankj.utilcode.util.DeviceUtils
import com.blankj.utilcode.util.NetworkUtils import com.blankj.utilcode.util.NetworkUtils
import com.blankj.utilcode.util.ScreenUtils import com.blankj.utilcode.util.ScreenUtils
import com.xm.test.myfilemaster.ad.AESHelper import com.xm.test.myfile.ad.AESHelper
import com.xm.test.myfilemaster.ad.ConfigHelper import com.xm.test.myfile.ad.ConfigHelper
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay 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.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
......
package com.xm.test.myfilemaster.activity package com.xm.test.myfile.activity
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
...@@ -12,10 +12,9 @@ import android.view.View ...@@ -12,10 +12,9 @@ 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.xm.test.myfilemaster.R import com.xm.test.myfile.R
import com.xm.test.myfilemaster.util.BatteryUtil import com.xm.test.myfile.util.BatteryUtil
import com.xm.test.myfilemaster.util.PermissionUtil import com.xm.test.myfile.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.xm.test.myfilemaster.activity package com.xm.test.myfile.activity
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
...@@ -23,13 +23,13 @@ import com.cloud.cleanjunksdk.residual.ResidualBean ...@@ -23,13 +23,13 @@ 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.xm.test.myfilemaster.MyApplication import com.xm.test.myfile.MyApplication
import com.xm.test.myfilemaster.R import com.xm.test.myfile.R
import com.xm.test.myfilemaster.adapter.CleanAdapter import com.xm.test.myfile.adapter.CleanAdapter
import com.xm.test.myfilemaster.adapter.CleanAdapter2 import com.xm.test.myfile.adapter.CleanAdapter2
import com.xm.test.myfilemaster.model.CleanBean import com.xm.test.myfile.model.CleanBean
import com.xm.test.myfilemaster.model.FileBean import com.xm.test.myfile.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil import com.xm.test.myfile.util.FileUtil
import java.io.File import java.io.File
class CleanActivity : AppCompatActivity(), CleanAdapter2.IClean { class CleanActivity : AppCompatActivity(), CleanAdapter2.IClean {
......
package com.xm.test.myfilemaster.activity package com.xm.test.myfile.activity
import android.os.Bundle import android.os.Bundle
import com.kongzue.dialogx.dialogs.WaitDialog import com.kongzue.dialogx.dialogs.WaitDialog
import com.xm.test.myfilemaster.R import com.xm.test.myfile.R
import com.xm.test.myfilemaster.base.BaseActivity import com.xm.test.myfile.base.BaseActivity
import com.xm.test.myfilemaster.model.FileBean import com.xm.test.myfile.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil import com.xm.test.myfile.util.FileUtil
class FileManagerActivity : BaseActivity() { class FileManagerActivity : BaseActivity() {
private var mFileBeanList = ArrayList<FileBean>() private var mFileBeanList = ArrayList<FileBean>()
......
package com.xm.test.myfilemaster.activity package com.xm.test.myfile.activity
import android.Manifest import android.Manifest
import android.os.Build import android.os.Build
...@@ -14,17 +14,14 @@ import androidx.fragment.app.Fragment ...@@ -14,17 +14,14 @@ import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2 import androidx.viewpager2.widget.ViewPager2
import com.permissionx.guolindev.PermissionX import com.permissionx.guolindev.PermissionX
import com.permissionx.guolindev.callback.RequestCallback import com.xm.test.myfile.R
import com.xm.test.myfilemaster.R import com.xm.test.myfile.fragment.FileManagerFragment
import com.xm.test.myfilemaster.fragment.FileManagerFragment import com.xm.test.myfile.fragment.HomeFragment
import com.xm.test.myfilemaster.fragment.HomeFragment import com.xm.test.myfile.fragment.InternalStorageFragment
import com.xm.test.myfilemaster.fragment.InternalStorageFragment import com.xm.test.myfile.notification.NotificationHelper.postNotification
import com.xm.test.myfilemaster.notification.NotificationHelper import com.xm.test.myfile.util.PermissionUtil
import com.xm.test.myfilemaster.notification.NotificationHelper.postNotification
import com.xm.test.myfilemaster.util.PermissionUtil
class HomeActivity : AppCompatActivity() { class HomeActivity : AppCompatActivity() {
private val REQUEST_MANAGE_EXTERNAL_STORAGE_PERMISSION = 101
var mViewPage: ViewPager2? = null var mViewPage: ViewPager2? = null
companion object{ companion object{
...@@ -115,26 +112,24 @@ class HomeActivity : AppCompatActivity() { ...@@ -115,26 +112,24 @@ class HomeActivity : AppCompatActivity() {
PermissionX.init(this).permissions( PermissionX.init(this).permissions(
Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.POST_NOTIFICATIONS, ).request { allGranted, grantedList, deniedList ->
).request(RequestCallback { allGranted, grantedList, deniedList -> if (allGranted) {
if (allGranted){
isPermission = true isPermission = true
}else{ } else {
isPermission = false isPermission = false
} }
}) }
} else { } else {
PermissionX.init(this).permissions( PermissionX.init(this).permissions(
Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.POST_NOTIFICATIONS, ).request { allGranted, grantedList, deniedList ->
).request(RequestCallback { allGranted, grantedList, deniedList -> if (allGranted) {
if (allGranted){
isPermission = true isPermission = true
}else{ } else {
isPermission = false isPermission = false
} }
}) }
} }
} }
......
...@@ -8,8 +8,7 @@ import android.widget.ImageView ...@@ -8,8 +8,7 @@ import android.widget.ImageView
import android.widget.VideoView import android.widget.VideoView
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.xm.test.myfilemaster.R import com.xm.test.myfile.R
import com.xm.test.myfilemaster.model.FileBean
class ImageShowActivity : AppCompatActivity() { class ImageShowActivity : AppCompatActivity() {
......
package com.xm.test.myfilemaster.activity package com.xm.test.myfile.activity
import android.os.Bundle import android.os.Bundle
import android.os.Environment import android.os.Environment
import android.widget.ListView import android.widget.ListView
import com.kongzue.dialogx.dialogs.WaitDialog import com.kongzue.dialogx.dialogs.WaitDialog
import com.xm.test.myfilemaster.R import com.xm.test.myfile.R
import com.xm.test.myfilemaster.base.BaseActivity import com.xm.test.myfile.base.BaseActivity
import com.xm.test.myfilemaster.model.FileBean import com.xm.test.myfile.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil import com.xm.test.myfile.util.FileUtil
import com.xm.test.myfilemaster.util.PermissionUtil import com.xm.test.myfile.util.PermissionUtil
class InternalStorageActivity : BaseActivity() { class InternalStorageActivity : BaseActivity() {
private lateinit var mFilesItemListView: ListView private lateinit var mFilesItemListView: ListView
......
package com.xm.test.myfilemaster.activity package com.xm.test.myfile.activity
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
...@@ -13,15 +13,13 @@ import androidx.appcompat.app.AppCompatActivity ...@@ -13,15 +13,13 @@ 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.activity.ImageShowActivity import com.test.mydemo3.activity.ImageShowActivity
import com.xm.test.myfilemaster.MyApplication import com.xm.test.myfile.MyApplication
import com.xm.test.myfilemaster.R import com.xm.test.myfile.R
import com.xm.test.myfilemaster.adapter.MediaAdapter import com.xm.test.myfile.adapter.MediaAdapter
import com.xm.test.myfilemaster.adapter.MediaAdapter2 import com.xm.test.myfile.model.FileBean
import com.xm.test.myfilemaster.databinding.ActivityMediaBinding import com.xm.test.myfile.util.FileUtil
import com.xm.test.myfilemaster.model.FileBean import com.xm.test.myfile.util.PermissionUtil
import com.xm.test.myfilemaster.util.FileUtil import com.xm.test.myfile.view.CustomDialog
import com.xm.test.myfilemaster.util.PermissionUtil
import com.xm.test.myfilemaster.view.CustomDialog
import java.io.File import java.io.File
class MediaActivity : AppCompatActivity() { class MediaActivity : AppCompatActivity() {
......
package com.xm.test.myfilemaster.activity package com.xm.test.myfile.activity
import android.os.Bundle import android.os.Bundle
import android.util.SparseBooleanArray import android.util.SparseBooleanArray
...@@ -8,11 +8,11 @@ import android.widget.TextView ...@@ -8,11 +8,11 @@ import android.widget.TextView
import android.widget.Toast import android.widget.Toast
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.core.view.isVisible import androidx.core.view.isVisible
import com.xm.test.myfilemaster.R import com.xm.test.myfile.R
import com.xm.test.myfilemaster.adapter.FilesItemViewAdapter import com.xm.test.myfile.adapter.FilesItemViewAdapter
import com.xm.test.myfilemaster.fragment.InternalStorageFragment import com.xm.test.myfile.fragment.InternalStorageFragment
import com.xm.test.myfilemaster.model.FileBean import com.xm.test.myfile.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil import com.xm.test.myfile.util.FileUtil
class MoveOrCopyActivity : ComponentActivity() { class MoveOrCopyActivity : ComponentActivity() {
......
package com.xm.test.myfilemaster.activity package com.xm.test.myfile.activity
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import com.xm.test.myfilemaster.R import com.xm.test.myfile.antivirus.AntivirusActivity
import com.xm.test.myfilemaster.antivirus.AntivirusActivity import com.xm.test.myfile.databinding.ResultLayoutBinding
import com.xm.test.myfilemaster.databinding.ActivityAntivirusBinding
import com.xm.test.myfilemaster.databinding.ActivityMainBinding
import com.xm.test.myfilemaster.databinding.ResultLayoutBinding
class ResultPageActivity : ComponentActivity() { class ResultPageActivity : ComponentActivity() {
......
package com.xm.test.myfilemaster.activity package com.xm.test.myfile.activity
import android.os.Bundle import android.os.Bundle
import android.widget.ListView import android.widget.ListView
import com.kongzue.dialogx.dialogs.WaitDialog import com.kongzue.dialogx.dialogs.WaitDialog
import com.xm.test.myfilemaster.R import com.xm.test.myfile.R
import com.xm.test.myfilemaster.base.BaseActivity import com.xm.test.myfile.base.BaseActivity
import com.xm.test.myfilemaster.model.FileBean import com.xm.test.myfile.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil import com.xm.test.myfile.util.FileUtil
class ScanEmptyFilesActivity : BaseActivity() { class ScanEmptyFilesActivity : BaseActivity() {
......
package com.xm.test.myfilemaster.activity package com.xm.test.myfile.activity
import android.os.Bundle import android.os.Bundle
import android.view.View 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.xm.test.myfilemaster.R import com.xm.test.myfile.R
import com.xm.test.myfilemaster.base.BaseActivity import com.xm.test.myfile.base.BaseActivity
import com.xm.test.myfilemaster.databinding.ActivityScanLargeFilesBinding import com.xm.test.myfile.model.FileBean
import com.xm.test.myfilemaster.model.FileBean import com.xm.test.myfile.util.FileUtil
import com.xm.test.myfilemaster.util.FileUtil
class ScanLargeFilesActivity : BaseActivity() { class ScanLargeFilesActivity : BaseActivity() {
......
package com.xm.test.myfilemaster.activity package com.xm.test.myfile.activity
import android.content.Intent import android.content.Intent
import android.content.pm.PackageManager import android.content.pm.PackageManager
...@@ -11,9 +11,9 @@ import android.widget.TextView ...@@ -11,9 +11,9 @@ import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.isVisible import androidx.core.view.isVisible
import com.trustlook.sdk.data.AppInfo import com.trustlook.sdk.data.AppInfo
import com.xm.test.myfilemaster.R import com.xm.test.myfile.R
import com.xm.test.myfilemaster.adapter.ScanResultAdapter import com.xm.test.myfile.adapter.ScanResultAdapter
import com.xm.test.myfilemaster.view.CustomDialog import com.xm.test.myfile.view.CustomDialog
class ScanResultActivity : AppCompatActivity() { class ScanResultActivity : AppCompatActivity() {
......
package com.xm.test.myfilemaster.activity package com.xm.test.myfile.activity
import android.os.Bundle import android.os.Bundle
import android.util.Log import android.util.Log
...@@ -11,20 +11,15 @@ import android.widget.RelativeLayout ...@@ -11,20 +11,15 @@ import android.widget.RelativeLayout
import android.widget.TextView import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
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.cloud.cleanjunksdk.task.SimilarScanCallBack import com.cloud.cleanjunksdk.task.SimilarScanCallBack
import com.trustlook.sdk.data.AppInfo import com.xm.test.myfile.MyApplication
import com.xm.test.myfilemaster.MyApplication import com.xm.test.myfile.R
import com.xm.test.myfilemaster.R import com.xm.test.myfile.adapter.SimilarBeanAdapter
import com.xm.test.myfilemaster.adapter.ImageItemAdapter import com.xm.test.myfile.model.FileBean
import com.xm.test.myfilemaster.adapter.SimilarBeanAdapter import com.xm.test.myfile.view.CustomDialog
import com.xm.test.myfilemaster.base.BaseActivity
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, SimilarBeanAdapter.RefreshNumberText{ class SimilarImagesActivity : AppCompatActivity(), OnClickListener, SimilarBeanAdapter.RefreshNumberText{
......
package com.xm.test.myfilemaster.ad package com.xm.test.myfile.ad
import android.util.Base64 import android.util.Base64
import java.security.SecureRandom import java.security.SecureRandom
...@@ -7,7 +7,6 @@ import javax.crypto.spec.GCMParameterSpec ...@@ -7,7 +7,6 @@ import javax.crypto.spec.GCMParameterSpec
import javax.crypto.spec.SecretKeySpec import javax.crypto.spec.SecretKeySpec
object AESHelper { object AESHelper {
private const val aesKey = "ccc7okanmfth88nb"
private val cipher by lazy { private val cipher by lazy {
Cipher.getInstance("AES/GCM/NoPadding") Cipher.getInstance("AES/GCM/NoPadding")
...@@ -54,6 +53,6 @@ object AESHelper { ...@@ -54,6 +53,6 @@ object AESHelper {
} }
private val secretKey by lazy { 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 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 { object AdUtils {
...@@ -18,11 +20,11 @@ object AdUtils { ...@@ -18,11 +20,11 @@ object AdUtils {
if (TextUtils.equals(adEntity.type, "interstitial")) { if (TextUtils.equals(adEntity.type, "interstitial")) {
val isOrganic = UserChancelEx.isOrganicUser() val isOrganic = UserChancelEx.isOrganicUser()
if (isOrganic) { if (isOrganic) {
if (!canNextTime("interstitial", ComUtils.getComConfig().nature_insert_interval)) { if (!canNextTime("interstitial", ComUtils.getGlobalConfig().nature_insert_interval)) {
return false return false
} }
} else { } else {
if (!canNextTime("interstitial", ComUtils.getComConfig().buy_insert_interval)) { if (!canNextTime("interstitial", ComUtils.getGlobalConfig().buy_insert_interval)) {
return false return false
} }
} }
...@@ -31,7 +33,8 @@ object AdUtils { ...@@ -31,7 +33,8 @@ object AdUtils {
return false 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) { if (adNum >= adEntity.show_limit) {
return false return false
} }
...@@ -45,7 +48,7 @@ object AdUtils { ...@@ -45,7 +48,7 @@ object AdUtils {
* @param interval 单位分钟 * @param interval 单位分钟
*/ */
private fun canNextTime(key: String, interval: Int): Boolean { 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 return (System.currentTimeMillis() - lastPushTime) / 1000 > interval
} }
......
package com.xm.test.myfilemaster.ad package com.xm.test.myfile.ad
/**
* 配置信息都统一在这里管理
*/
object ConfigHelper { object ConfigHelper {
var gid = "" var gid = ""
// 以上默认即可,以下需要手动配置 // 以上默认即可,以下需要手动配置
// 域名 // 密钥
const val aesKey = "wlvwkqj5d9d89l5g"
// 测试域名
const val eventUrl = "https://rp.expert3326.xyz" const val eventUrl = "https://rp.expert3326.xyz"
const val apiUrl = "https://api.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 android.content.Context
import androidx.datastore.core.DataStore import androidx.datastore.core.DataStore
...@@ -14,34 +14,26 @@ import kotlinx.coroutines.runBlocking ...@@ -14,34 +14,26 @@ import kotlinx.coroutines.runBlocking
val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings") 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 FIRST_LAUNCH_TIME_KEY = longPreferencesKey("install_info")
//上次与推送通知时间 //上次与推送通知时间
val ALL_LAST_PUSH_TIME = longPreferencesKey("all_last_push_time") val ALL_LAST_PUSH_TIME_KEY = longPreferencesKey("all_last_push_time")
fun getStringKey(string: String): Preferences.Key<String> {
return stringPreferencesKey(string)
}
fun getLongKey(string: String): Preferences.Key<Long> {
return longPreferencesKey(string)
}
fun createByActionId(actionId: Int): Preferences.Key<Long> { fun createByActionId(actionId: Int): Preferences.Key<Long> {
return longPreferencesKey("actionId_$actionId") 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) { suspend fun <T> Context.saveDataStore(key: Preferences.Key<T>, any: T) {
dataStore.edit { it[key] = any } dataStore.edit { it[key] = any }
......
package com.xm.test.myfilemaster.ad package com.xm.test.myfile.ad
import android.os.Build import android.os.Build
import android.util.Log import android.util.Log
...@@ -8,8 +8,8 @@ import com.blankj.utilcode.util.NetworkUtils ...@@ -8,8 +8,8 @@ import com.blankj.utilcode.util.NetworkUtils
import com.blankj.utilcode.util.SPUtils import com.blankj.utilcode.util.SPUtils
import com.blankj.utilcode.util.ScreenUtils import com.blankj.utilcode.util.ScreenUtils
import com.trustlook.sdk.BuildConfig import com.trustlook.sdk.BuildConfig
import com.xm.test.myfilemaster.MyApplication import com.xm.test.myfile.MyApplication
import com.xm.test.myfilemaster.ad.KokoReportHelper.isCharging import com.xm.test.myfile.ad.KokoReportHelper.isCharging
import okhttp3.Call import okhttp3.Call
import okhttp3.Callback import okhttp3.Callback
import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.MediaType.Companion.toMediaTypeOrNull
......
package com.xm.test.myfilemaster.ad package com.xm.test.myfile.ad
import android.content.Context import android.content.Context
import android.hardware.Sensor import android.hardware.Sensor
import android.hardware.SensorEvent import android.hardware.SensorEvent
import android.hardware.SensorEventListener import android.hardware.SensorEventListener
import android.hardware.SensorManager import android.hardware.SensorManager
import android.util.Log
import java.util.Timer import java.util.Timer
import java.util.TimerTask import java.util.TimerTask
import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicBoolean
import kotlin.math.sqrt
import kotlin.time.Duration.Companion.seconds import kotlin.time.Duration.Companion.seconds
import kotlin.time.DurationUnit import kotlin.time.DurationUnit
......
package com.xm.test.myfilemaster.ad package com.xm.test.myfile.ad
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context import android.content.Context
......
package com.xm.test.myfilemaster.ad package com.xm.test.myfile.ad
import android.app.Activity import android.app.Activity
import android.os.Handler import android.os.Handler
import android.os.Looper import android.os.Looper
import android.view.ViewGroup 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.MaxAd
import com.applovin.mediation.MaxAdListener import com.applovin.mediation.MaxAdListener
import com.applovin.mediation.MaxError import com.applovin.mediation.MaxError
...@@ -14,8 +16,8 @@ import com.applovin.mediation.nativeAds.MaxNativeAdLoader ...@@ -14,8 +16,8 @@ import com.applovin.mediation.nativeAds.MaxNativeAdLoader
import com.applovin.mediation.nativeAds.MaxNativeAdView import com.applovin.mediation.nativeAds.MaxNativeAdView
import com.applovin.sdk.AppLovinSdk import com.applovin.sdk.AppLovinSdk
import com.blankj.utilcode.util.ActivityUtils import com.blankj.utilcode.util.ActivityUtils
import com.xm.test.myfilemaster.MyApplication import com.xm.test.myfile.MyApplication
import com.xm.test.myfilemaster.netSendEvent import com.xm.test.myfile.netSendEvent
import org.json.JSONObject import org.json.JSONObject
import java.util.UUID import java.util.UUID
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
...@@ -33,15 +35,15 @@ object MaxAdUtils { ...@@ -33,15 +35,15 @@ object MaxAdUtils {
private fun isOpenAdLoaded() = mOpenAd?.isReady == true private fun isOpenAdLoaded() = mOpenAd?.isReady == true
fun loadOpenAd(skip: Boolean = false, onLoad: (() -> Unit)? = null) { fun loadOpenAd(skip: Boolean = false, onLoad: ((flag: Boolean) -> Unit)? = null) {
if(!AppLovinSdk.getInstance(MyApplication.fContext).isInitialized){ if (!AppLovinSdk.getInstance(MyApplication.fContext).isInitialized) {
onLoad?.invoke() onLoad?.invoke(false)
return return
} }
openAdUnit = ComUtils.getAdUnitCfg().openAd?.unit_id ?: "" openAdUnit = ComUtils.getAdUnitCfg().openAd?.unit_id ?: ""
mOpenAd = MaxAppOpenAd(openAdUnit, MyApplication.fContext) mOpenAd = MaxAppOpenAd(openAdUnit, MyApplication.fContext)
if (isOpenAdLoaded() || skip) { if (isOpenAdLoaded() || skip) {
onLoad?.invoke() onLoad?.invoke(false)
return return
} }
...@@ -54,7 +56,7 @@ object MaxAdUtils { ...@@ -54,7 +56,7 @@ object MaxAdUtils {
object : MaxAdListener { object : MaxAdListener {
override fun onAdLoaded(p0: MaxAd) { override fun onAdLoaded(p0: MaxAd) {
openLoadTime = System.currentTimeMillis() openLoadTime = System.currentTimeMillis()
onLoad?.invoke() onLoad?.invoke(true)
maxAdPullReport(p0, "openAd", reqId = reqId) maxAdPullReport(p0, "openAd", reqId = reqId)
} }
...@@ -65,7 +67,7 @@ object MaxAdUtils { ...@@ -65,7 +67,7 @@ object MaxAdUtils {
override fun onAdClicked(p0: MaxAd) {} override fun onAdClicked(p0: MaxAd) {}
override fun onAdLoadFailed(p0: String, p1: MaxError) { override fun onAdLoadFailed(p0: String, p1: MaxError) {
onLoad?.invoke() onLoad?.invoke(false)
maxAdPullReport(null, "AppOpenAd", p1.message) maxAdPullReport(null, "AppOpenAd", p1.message)
} }
...@@ -451,10 +453,16 @@ object MaxAdUtils { ...@@ -451,10 +453,16 @@ object MaxAdUtils {
// val nums=SPUtils.getInstance().getInt("${key}_ad_show_num", 0) // val nums=SPUtils.getInstance().getInt("${key}_ad_show_num", 0)
// SPUtils.getInstance().put("${key}_ad_show_num", nums+1) // 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 = val adNum =
MyApplication.fContext.queryDataStoreBlock(getIntString("${key}_ad_show_num"), 0) MyApplication.fContext.queryDataStoreBlock(intPreferencesKey("${key}_ad_show_num"), 0)
MyApplication.fContext.saveDataStoreBlock(getIntString("${key}_ad_show_num"), adNum + 1) 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 android.view.View import android.view.View
......
package com.xm.test.myfilemaster.ad package com.xm.test.myfile.ad
import com.xm.test.myfilemaster.MyApplication import com.xm.test.myfile.MyApplication
import com.xm.test.myfilemaster.ad.bean.PushCfg import com.xm.test.myfile.ad.bean.PushCfg
object PushManager { object PushManager {
...@@ -21,7 +21,7 @@ object PushManager { ...@@ -21,7 +21,7 @@ object PushManager {
* @param interval 单位分钟 * @param interval 单位分钟
*/ */
fun canPushNextTime(interval: Int): Boolean { 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 return (System.currentTimeMillis() - lastPushTime) / 1000 > interval
} }
......
package com.xm.test.myfilemaster.ad package com.xm.test.myfile.ad
import android.content.Context import android.content.Context
import android.telephony.TelephonyManager import android.telephony.TelephonyManager
import com.xm.test.myfilemaster.MyApplication import com.xm.test.myfile.MyApplication
/** /**
* 判断用户渠道的方法 * 判断用户渠道的方法
...@@ -35,7 +35,7 @@ object UserChancelEx { ...@@ -35,7 +35,7 @@ object UserChancelEx {
* 是否是自然用户 * 是否是自然用户
*/ */
fun isOrganicUser(): Boolean { 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")) return !(source.contains("gclid") || source.contains("facebook"))
} }
......
package com.xm.test.myfilemaster.ad.bean package com.xm.test.myfile.ad.bean
data class AdUnitCfg( data class AdUnitCfg(
val banner: AdUnitEntity, val banner: AdUnitEntity,
...@@ -8,7 +8,7 @@ data class AdUnitCfg( ...@@ -8,7 +8,7 @@ data class AdUnitCfg(
val interAd: AdUnitEntity val interAd: AdUnitEntity
) { ) {
data class 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( data class AdsCfg(
val banner: AdEntity, val splash_slot: AdEntity,
val interstitial: AdEntity, val interstitial_slot: AdEntity,
val rewardAd: AdEntity, val native_slot: AdEntity,
val splash: AdEntity, val banner_slot: AdEntity,
val ad_open: AdEntity val rewardAd_slot: AdEntity,
) { ) {
/** /**
...@@ -19,8 +24,7 @@ data class AdsCfg( ...@@ -19,8 +24,7 @@ data class AdsCfg(
var is_show: Int = 31,//是否展示 var is_show: Int = 31,//是否展示
var show_interval: Int = 0,//展示间隔 var show_interval: Int = 0,//展示间隔
var new_user_avoid_time: Int = 0,//新用户避免开启 var new_user_avoid_time: Int = 0,//新用户避免开启
var unit_id: String = "12312443123", var type: String = "",
var type: String = "3",
var open_ad_is_show: Int = 31, var open_ad_is_show: Int = 31,
var loading_page_time: Int = 5, var loading_page_time: Int = 5,
var show_limit: Int = 40 var show_limit: Int = 40
......
package com.xm.test.myfilemaster.ad.bean package com.xm.test.myfile.ad.bean
/** /**
* 广告配置数据
*/ */
data class ConfigureData( data class ConfigureData(
val ads_cfg: AdsCfg, val ads_cfg: AdsCfg,
......
package com.xm.test.myfilemaster.ad.bean package com.xm.test.myfile.ad.bean
/** /**
* 功能和场景的推送配置 * 功能和场景的推送配置
......
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.content.Context
import android.util.SparseBooleanArray import android.util.SparseBooleanArray
...@@ -12,10 +12,10 @@ import android.widget.LinearLayout ...@@ -12,10 +12,10 @@ import android.widget.LinearLayout
import android.widget.ListView import android.widget.ListView
import android.widget.RelativeLayout import android.widget.RelativeLayout
import android.widget.TextView import android.widget.TextView
import com.xm.test.myfilemaster.R import com.xm.test.myfile.R
import com.xm.test.myfilemaster.model.CleanBean import com.xm.test.myfile.model.CleanBean
import com.xm.test.myfilemaster.model.FileBean import com.xm.test.myfile.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil import com.xm.test.myfile.util.FileUtil
class CleanAdapter( class CleanAdapter(
fileBeanList: ArrayList<CleanBean>, fileBeanList: ArrayList<CleanBean>,
......
package com.xm.test.myfilemaster.adapter package com.xm.test.myfile.adapter
import android.util.Log import android.util.Log
import android.util.SparseBooleanArray import android.util.SparseBooleanArray
...@@ -6,11 +6,11 @@ import android.view.LayoutInflater ...@@ -6,11 +6,11 @@ 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.xm.test.myfilemaster.R import com.xm.test.myfile.R
import com.xm.test.myfilemaster.databinding.CleanListItemLayoutBinding import com.xm.test.myfile.databinding.CleanListItemLayoutBinding
import com.xm.test.myfilemaster.databinding.FilesItemLayoutBinding import com.xm.test.myfile.databinding.FilesItemLayoutBinding
import com.xm.test.myfilemaster.model.CleanBean import com.xm.test.myfile.model.CleanBean
import com.xm.test.myfilemaster.model.FileBean import com.xm.test.myfile.model.FileBean
class CleanAdapter2(mIClean: IClean) : RecyclerView.Adapter<CleanAdapter2.AAA>() { 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.content.Context
import android.util.SparseBooleanArray import android.util.SparseBooleanArray
...@@ -9,9 +9,9 @@ import android.widget.BaseAdapter ...@@ -9,9 +9,9 @@ import android.widget.BaseAdapter
import android.widget.CheckBox import android.widget.CheckBox
import android.widget.ImageView import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import com.xm.test.myfilemaster.R import com.xm.test.myfile.R
import com.xm.test.myfilemaster.model.FileBean import com.xm.test.myfile.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil import com.xm.test.myfile.util.FileUtil
class FilesItemViewAdapter( class FilesItemViewAdapter(
mItemFileList: List<FileBean>, mContext: Context, mItemFileList: List<FileBean>, mContext: Context,
......
package com.xm.test.myfilemaster.adapter package com.xm.test.myfile.adapter
import android.content.Context import android.content.Context
import android.graphics.BitmapFactory import android.graphics.BitmapFactory
...@@ -14,10 +14,10 @@ import android.widget.GridView ...@@ -14,10 +14,10 @@ import android.widget.GridView
import android.widget.ImageView import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import com.cloud.cleanjunksdk.similar.PicSimilarInfo import com.cloud.cleanjunksdk.similar.PicSimilarInfo
import com.xm.test.myfilemaster.R import com.xm.test.myfile.R
import com.xm.test.myfilemaster.activity.SimilarImagesActivity import com.xm.test.myfile.activity.SimilarImagesActivity
import com.xm.test.myfilemaster.model.FileBean import com.xm.test.myfile.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil import com.xm.test.myfile.util.FileUtil
class ImageItemAdapter(mContext: Context class ImageItemAdapter(mContext: Context
, mDataList: ArrayList<ArrayList<FileBean>>): BaseAdapter() { , mDataList: ArrayList<ArrayList<FileBean>>): BaseAdapter() {
......
package com.xm.test.myfilemaster.adapter package com.xm.test.myfile.adapter
import android.content.Context import android.content.Context
import android.util.SparseBooleanArray import android.util.SparseBooleanArray
...@@ -9,10 +9,10 @@ import android.widget.BaseAdapter ...@@ -9,10 +9,10 @@ import android.widget.BaseAdapter
import android.widget.CheckBox import android.widget.CheckBox
import android.widget.ImageView import android.widget.ImageView
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.xm.test.myfilemaster.R import com.xm.test.myfile.R
import com.xm.test.myfilemaster.activity.MediaActivity import com.xm.test.myfile.activity.MediaActivity
import com.xm.test.myfilemaster.model.FileBean import com.xm.test.myfile.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil import com.xm.test.myfile.util.FileUtil
class MediaAdapter( class MediaAdapter(
mListData: ArrayList<FileBean>, mListData: ArrayList<FileBean>,
......
package com.xm.test.myfilemaster.adapter package com.xm.test.myfile.adapter
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context
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.CheckBox
import android.widget.ImageView
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.xm.test.myfilemaster.R import com.xm.test.myfile.R
import com.xm.test.myfilemaster.activity.MediaActivity import com.xm.test.myfile.databinding.ItemImageVideoBinding
import com.xm.test.myfilemaster.databinding.ItemImageVideoBinding import com.xm.test.myfile.model.FileBean
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
class MediaAdapter2 : RecyclerView.Adapter<MediaAdapter2.CCC>() { 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.Context
import android.content.pm.PackageManager import android.content.pm.PackageManager
...@@ -9,7 +9,7 @@ import android.widget.BaseAdapter ...@@ -9,7 +9,7 @@ import android.widget.BaseAdapter
import android.widget.ImageView import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import com.trustlook.sdk.data.AppInfo import com.trustlook.sdk.data.AppInfo
import com.xm.test.myfilemaster.R import com.xm.test.myfile.R
class ScanResultAdapter(dataList: ArrayList<AppInfo>, class ScanResultAdapter(dataList: ArrayList<AppInfo>,
context: Context) : BaseAdapter() { context: Context) : BaseAdapter() {
......
package com.xm.test.myfilemaster.adapter package com.xm.test.myfile.adapter
import android.content.Context import android.content.Context
import android.util.Log import android.util.Log
...@@ -8,13 +8,11 @@ import android.view.View ...@@ -8,13 +8,11 @@ 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.xm.test.myfile.R
import com.cloud.cleanjunksdk.similar.PicSimilarInfo import com.xm.test.myfile.activity.SimilarImagesActivity
import com.xm.test.myfilemaster.R import com.xm.test.myfile.databinding.ImageItemLayoutBinding
import com.xm.test.myfilemaster.activity.SimilarImagesActivity import com.xm.test.myfile.model.FileBean
import com.xm.test.myfilemaster.databinding.ImageItemLayoutBinding import com.xm.test.myfile.util.FileUtil
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
class SimilarBeanAdapter(context: Context, refreshNumListener: RefreshNumberText) : RecyclerView.Adapter<SimilarBeanAdapter.AA>() { class SimilarBeanAdapter(context: Context, refreshNumListener: RefreshNumberText) : RecyclerView.Adapter<SimilarBeanAdapter.AA>() {
private val list = arrayListOf<ArrayList<FileBean>>() private val list = arrayListOf<ArrayList<FileBean>>()
......
package com.xm.test.myfilemaster.adapter package com.xm.test.myfile.adapter
import android.content.Context import android.content.Context
import android.graphics.BitmapFactory
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
...@@ -11,11 +9,10 @@ import android.widget.BaseAdapter ...@@ -11,11 +9,10 @@ import android.widget.BaseAdapter
import android.widget.CheckBox import android.widget.CheckBox
import android.widget.ImageView import android.widget.ImageView
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.cloud.cleanjunksdk.similar.PicInfo import com.xm.test.myfile.R
import com.xm.test.myfilemaster.R import com.xm.test.myfile.activity.SimilarImagesActivity
import com.xm.test.myfilemaster.activity.SimilarImagesActivity import com.xm.test.myfile.model.FileBean
import com.xm.test.myfilemaster.model.FileBean import com.xm.test.myfile.util.FileUtil
import com.xm.test.myfilemaster.util.FileUtil
class SimilarGridAdapter( class SimilarGridAdapter(
list: MutableList<FileBean>, context: Context, 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.Intent
import android.content.SharedPreferences import android.content.SharedPreferences
import android.os.Bundle import android.os.Bundle
...@@ -13,9 +12,9 @@ import android.widget.TextView ...@@ -13,9 +12,9 @@ import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
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.myfile.MyApplication
import com.xm.test.myfilemaster.R import com.xm.test.myfile.R
import com.xm.test.myfilemaster.activity.ScanResultActivity import com.xm.test.myfile.activity.ScanResultActivity
class AntivirusActivity : AppCompatActivity() { class AntivirusActivity : AppCompatActivity() {
......
package com.xm.test.myfilemaster.base package com.xm.test.myfile.base
import android.content.Context import android.content.Context
import android.util.AttributeSet import android.util.AttributeSet
......
package com.xm.test.myfilemaster.base package com.xm.test.myfile.base
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
...@@ -17,16 +17,16 @@ import androidx.core.content.FileProvider ...@@ -17,16 +17,16 @@ import androidx.core.content.FileProvider
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.xm.test.myfilemaster.MyApplication import com.xm.test.myfile.MyApplication
import com.xm.test.myfilemaster.R import com.xm.test.myfile.R
import com.xm.test.myfilemaster.activity.BaseActivityViewModel import com.xm.test.myfile.activity.BaseActivityViewModel
import com.xm.test.myfilemaster.activity.HomeActivity import com.xm.test.myfile.activity.HomeActivity
import com.xm.test.myfilemaster.activity.MoveOrCopyActivity import com.xm.test.myfile.activity.MoveOrCopyActivity
import com.xm.test.myfilemaster.adapter.FilesItemViewAdapter import com.xm.test.myfile.adapter.FilesItemViewAdapter
import com.xm.test.myfilemaster.model.FileBean import com.xm.test.myfile.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil import com.xm.test.myfile.util.FileUtil
import com.xm.test.myfilemaster.util.PermissionUtil import com.xm.test.myfile.util.PermissionUtil
import com.xm.test.myfilemaster.view.CustomDialog import com.xm.test.myfile.view.CustomDialog
import java.io.File import java.io.File
abstract class BaseActivity : BaseAbsView(), BaseActivityListener{ abstract class BaseActivity : BaseAbsView(), BaseActivityListener{
......
package com.xm.test.myfilemaster.base package com.xm.test.myfile.base
interface BaseActivityListener { interface BaseActivityListener {
fun setTitle(str: String) fun setTitle(str: String)
......
package com.xm.test.myfilemaster.fragment package com.xm.test.myfile.fragment
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
...@@ -8,14 +8,14 @@ import android.view.LayoutInflater ...@@ -8,14 +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 com.xm.test.myfilemaster.R import com.xm.test.myfile.R
import com.xm.test.myfilemaster.activity.FileManagerActivity import com.xm.test.myfile.activity.FileManagerActivity
import com.xm.test.myfilemaster.activity.MediaActivity import com.xm.test.myfile.activity.MediaActivity
import com.xm.test.myfilemaster.adapter.MediaAdapter import com.xm.test.myfile.adapter.MediaAdapter
import com.xm.test.myfilemaster.model.FileBean import com.xm.test.myfile.model.FileBean
import com.xm.test.myfilemaster.util.MediaUtil import com.xm.test.myfile.util.MediaUtil
import com.xm.test.myfilemaster.util.PermissionUtil import com.xm.test.myfile.util.PermissionUtil
import com.xm.test.myfilemaster.view.CustomDialog import com.xm.test.myfile.view.CustomDialog
class FileManagerFragment : Fragment(), View.OnClickListener { class FileManagerFragment : Fragment(), View.OnClickListener {
private lateinit var mView: View private lateinit var mView: View
......
package com.xm.test.myfilemaster.fragment package com.xm.test.myfile.fragment
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
......
package com.xm.test.myfilemaster.fragment package com.xm.test.myfile.fragment
import android.app.ActivityManager import android.app.ActivityManager
import android.content.Context import android.content.Context
...@@ -15,15 +15,15 @@ import android.view.ViewGroup ...@@ -15,15 +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.xm.test.myfilemaster.R import com.xm.test.myfile.R
import com.xm.test.myfilemaster.activity.BatteryActivity import com.xm.test.myfile.activity.BatteryActivity
import com.xm.test.myfilemaster.activity.CleanActivity import com.xm.test.myfile.activity.CleanActivity
import com.xm.test.myfilemaster.activity.ScanEmptyFilesActivity import com.xm.test.myfile.activity.ScanEmptyFilesActivity
import com.xm.test.myfilemaster.activity.ScanLargeFilesActivity import com.xm.test.myfile.activity.ScanLargeFilesActivity
import com.xm.test.myfilemaster.activity.SimilarImagesActivity import com.xm.test.myfile.activity.SimilarImagesActivity
import com.xm.test.myfilemaster.antivirus.AntivirusActivity import com.xm.test.myfile.antivirus.AntivirusActivity
import com.xm.test.myfilemaster.util.PermissionUtil import com.xm.test.myfile.util.PermissionUtil
import com.xm.test.myfilemaster.view.CustomDialog import com.xm.test.myfile.view.CustomDialog
class HomeFragment : Fragment(), OnClickListener{ class HomeFragment : Fragment(), OnClickListener{
private lateinit var mView: View private lateinit var mView: View
...@@ -36,7 +36,7 @@ class HomeFragment : Fragment(), OnClickListener{ ...@@ -36,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: com.xm.test.myfilemaster.view.CirclePgBar private lateinit var mCirclePgBar: com.xm.test.myfile.view.CirclePgBar
companion object { companion object {
fun newInstance() = HomeFragment() fun newInstance() = HomeFragment()
} }
...@@ -80,7 +80,7 @@ class HomeFragment : Fragment(), OnClickListener{ ...@@ -80,7 +80,7 @@ class HomeFragment : Fragment(), OnClickListener{
mScanEmptyFiles.setOnClickListener(this) mScanEmptyFiles.setOnClickListener(this)
mBatteryInfo.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.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.xm.test.myfilemaster.fragment package com.xm.test.myfile.fragment
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
......
package com.xm.test.myfilemaster.fragment package com.xm.test.myfile.fragment
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
...@@ -22,17 +22,17 @@ import androidx.core.view.isVisible ...@@ -22,17 +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.xm.test.myfilemaster.MyApplication import com.xm.test.myfile.MyApplication
import com.xm.test.myfilemaster.R import com.xm.test.myfile.R
import com.xm.test.myfilemaster.activity.BaseActivityViewModel import com.xm.test.myfile.activity.BaseActivityViewModel
import com.xm.test.myfilemaster.activity.HomeActivity import com.xm.test.myfile.activity.HomeActivity
import com.xm.test.myfilemaster.activity.MoveOrCopyActivity import com.xm.test.myfile.activity.MoveOrCopyActivity
import com.xm.test.myfilemaster.adapter.FilesItemViewAdapter import com.xm.test.myfile.adapter.FilesItemViewAdapter
import com.xm.test.myfilemaster.base.BaseActivity import com.xm.test.myfile.base.BaseActivity
import com.xm.test.myfilemaster.model.FileBean import com.xm.test.myfile.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil import com.xm.test.myfile.util.FileUtil
import com.xm.test.myfilemaster.util.PermissionUtil import com.xm.test.myfile.util.PermissionUtil
import com.xm.test.myfilemaster.view.CustomDialog import com.xm.test.myfile.view.CustomDialog
import java.io.File import java.io.File
class InternalStorageFragment : Fragment(), View.OnClickListener { class InternalStorageFragment : Fragment(), View.OnClickListener {
......
package com.xm.test.myfilemaster.model package com.xm.test.myfile.model
data class GlobalConfig( data class GlobalConfig(
val cacheTime: Int, val cacheTime: Int,
......
package com.xm.test.myfilemaster.model package com.xm.test.myfile.model
import java.io.Serializable import java.io.Serializable
......
package com.xm.test.myfilemaster.model package com.xm.test.myfile.model
import android.graphics.Bitmap import android.graphics.Bitmap
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
......
package com.xm.test.myfilemaster.model package com.xm.test.myfile.model
class FilesItemBean{ class FilesItemBean{
var resId: Int = 0 var resId: Int = 0
......
package com.xm.test.myfilemaster.notification package com.xm.test.myfile.notification
import android.app.ActivityManager import android.app.ActivityManager
import android.content.BroadcastReceiver import android.content.BroadcastReceiver
...@@ -6,17 +6,17 @@ import android.content.Context ...@@ -6,17 +6,17 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.BatteryManager import android.os.BatteryManager
import android.util.Log import android.util.Log
import com.xm.test.myfilemaster.MyApplication import com.xm.test.myfile.MyApplication
import com.xm.test.myfilemaster.ad.ComUtils import com.xm.test.myfile.ad.ComUtils
import com.xm.test.myfilemaster.ad.PushManager import com.xm.test.myfile.ad.PushManager
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_BOOST_PUSH import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_BOOST_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_CHARGE import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_CHARGE
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_INSTALL_PACKAGE_PUSH import com.xm.test.myfile.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.myfile.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.myfile.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.myfile.ad.bean.PushCfg.Companion.ID_UNINSTALL_PACKAGE_PUSH
import com.xm.test.myfilemaster.notification.NotificationHelper.postNotification import com.xm.test.myfile.notification.NotificationHelper.postNotification
import com.xm.test.myfilemaster.common.notification.NotificationEx import com.xm.test.myfile.common.notification.NotificationEx
import java.io.File 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 { object NotificationEx {
......
package com.xm.test.myfilemaster.notification package com.xm.test.myfile.notification
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.NotificationChannel import android.app.NotificationChannel
...@@ -12,26 +12,26 @@ import android.os.Build ...@@ -12,26 +12,26 @@ import android.os.Build
import android.widget.RemoteViews import android.widget.RemoteViews
import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat import androidx.core.app.NotificationManagerCompat
import com.xm.test.myfilemaster.MyApplication import com.xm.test.myfile.MyApplication
import com.xm.test.myfilemaster.R import com.xm.test.myfile.R
import com.xm.test.myfilemaster.activity.HomeActivity import com.xm.test.myfile.activity.HomeActivity
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_BATTERY_PUSH import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_BATTERY_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_BIGFILE_PUSH import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_BIGFILE_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_BOOST_PUSH import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_BOOST_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_CHARGE import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_CHARGE
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_COOL_PUSH import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_COOL_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_DUPLICATE_FILE_PUSH import com.xm.test.myfile.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.myfile.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.myfile.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.myfile.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.myfile.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.myfile.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.myfile.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.myfile.ad.bean.PushCfg.Companion.ID_VIDEO_CLEAN_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_VIRUS_PUSH import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_VIRUS_PUSH
import com.xm.test.myfilemaster.ad.bean.PushCfg.Companion.ID_WIFI_PUSH import com.xm.test.myfile.ad.bean.PushCfg.Companion.ID_WIFI_PUSH
import com.xm.test.myfilemaster.ad.createByActionId import com.xm.test.myfile.ad.createByActionId
import com.xm.test.myfilemaster.ad.saveDataStoreBlock import com.xm.test.myfile.ad.saveDataStoreBlock
import kotlin.random.Random import kotlin.random.Random
/** /**
......
package com.xm.test.myfilemaster.util package com.xm.test.myfile.util
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
......
package com.xm.test.myfilemaster.util package com.xm.test.myfile.util
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context import android.content.Context
...@@ -10,7 +10,7 @@ import android.os.Environment ...@@ -10,7 +10,7 @@ import android.os.Environment
import android.provider.MediaStore import android.provider.MediaStore
import android.util.Log import android.util.Log
import android.util.TypedValue 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.File
import java.io.IOException import java.io.IOException
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
......
package com.xm.test.myfilemaster.util package com.xm.test.myfile.util
import android.app.Application import android.app.Application
import com.bumptech.glide.annotation.GlideModule import com.bumptech.glide.annotation.GlideModule
......
package com.xm.test.myfilemaster.util package com.xm.test.myfile.util
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.ContentResolver import android.content.ContentResolver
...@@ -9,7 +9,7 @@ import android.graphics.drawable.BitmapDrawable ...@@ -9,7 +9,7 @@ import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.provider.MediaStore import android.provider.MediaStore
import android.util.TypedValue 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.File
object MediaUtil { object MediaUtil {
......
package com.xm.test.myfilemaster.util package com.xm.test.myfile.util
import android.Manifest import android.Manifest
import android.content.Context import android.content.Context
...@@ -13,7 +13,7 @@ import androidx.core.app.ActivityCompat ...@@ -13,7 +13,7 @@ import androidx.core.app.ActivityCompat
import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentActivity
import com.permissionx.guolindev.PermissionX import com.permissionx.guolindev.PermissionX
import com.permissionx.guolindev.callback.RequestCallback import com.permissionx.guolindev.callback.RequestCallback
import com.xm.test.myfilemaster.activity.HomeActivity import com.xm.test.myfile.activity.HomeActivity
object PermissionUtil { object PermissionUtil {
......
package com.xm.test.myfilemaster.util package com.xm.test.myfile.util
import android.bluetooth.BluetoothAdapter import android.bluetooth.BluetoothAdapter
import android.content.ContentResolver import android.content.ContentResolver
......
package com.xm.test.myfilemaster.view; package com.xm.test.myfile.view;
import android.content.Context; import android.content.Context;
import android.graphics.Canvas; import android.graphics.Canvas;
...@@ -7,7 +7,7 @@ import android.graphics.RectF; ...@@ -7,7 +7,7 @@ import android.graphics.RectF;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.View; 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.app.Dialog
import android.content.Context import android.content.Context
...@@ -9,7 +9,7 @@ import android.os.Bundle ...@@ -9,7 +9,7 @@ import android.os.Bundle
import android.view.View import android.view.View
import android.widget.EditText import android.widget.EditText
import android.widget.TextView import android.widget.TextView
import com.xm.test.myfilemaster.R import com.xm.test.myfile.R
class CustomDialog(context: Context?) : Dialog(context!!), View.OnClickListener{ class CustomDialog(context: Context?) : Dialog(context!!), View.OnClickListener{
private lateinit var mEdit: EditText private lateinit var mEdit: EditText
......
package com.xm.test.myfilemaster.view package com.xm.test.myfile.view
import android.animation.ValueAnimator import android.animation.ValueAnimator
import android.content.Context import android.content.Context
...@@ -8,7 +8,7 @@ import android.graphics.Canvas ...@@ -8,7 +8,7 @@ import android.graphics.Canvas
import android.graphics.Matrix import android.graphics.Matrix
import android.util.AttributeSet import android.util.AttributeSet
import android.view.View import android.view.View
import com.xm.test.myfilemaster.R import com.xm.test.myfile.R
class RotatingImageView @JvmOverloads constructor( class RotatingImageView @JvmOverloads constructor(
context: Context, 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 @@ ...@@ -3,62 +3,68 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main" android:id="@+id/main"
android:theme="@style/Theme.AppCompat.DayNight.NoActionBar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:theme="@style/Theme.AppCompat.DayNight.NoActionBar"
tools:context=".MainActivity"> tools:context=".MainActivity">
<LinearLayout <LinearLayout
android:id="@+id/ll_content"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical"
android:visibility="gone">
<ImageView <ImageView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:src="@mipmap/launch_icon" /> android:src="@mipmap/launch_icon" />
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="0dp" android:layout_height="0dp"
android:orientation="vertical"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_weight="1"> android:layout_weight="1"
android:orientation="vertical">
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1"
android:textStyle="bold"
android:layout_gravity="center" android:layout_gravity="center"
android:textSize="14dp"
android:textColor="@color/black"
android:gravity="bottom"
android:layout_marginBottom="12dp" 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 <ProgressBar
android:id="@+id/main_page_progress" android:id="@+id/main_page_progress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="4dp" android:layout_height="4dp"
style="?android:attr/progressBarStyleHorizontal" android:layout_alignParentStart="true"
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:layout_alignParentStart="true"
android:max="100"
android:indeterminate="false" android:indeterminate="false"
android:max="100"
android:progress="0" android:progress="0"
android:progressDrawable="@drawable/progress_bg"/> android:progressDrawable="@drawable/progress_bg" />
<TextView <TextView
android:textColor="@color/black"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_gravity="center"
android:layout_marginTop="12dp" android:layout_marginTop="12dp"
android:layout_weight="1" android:layout_weight="1"
android:layout_gravity="center" android:text="Please wait..."
android:textColor="@color/black"
android:textSize="14dp" android:textSize="14dp"
android:text="Please wait..."/> tools:ignore="TextSizeCheck" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
...@@ -66,13 +72,9 @@ ...@@ -66,13 +72,9 @@
android:id="@+id/start_rules_layout" android:id="@+id/start_rules_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<include layout="@layout/start_app_layout"/>
</RelativeLayout>
<!-- <com.applovin.mediation.ads.MaxAdView--> <include layout="@layout/start_app_layout" />
<!-- android:id="@+id/main_max_ad_view"--> </RelativeLayout>
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"/>-->
</RelativeLayout> </RelativeLayout>
\ No newline at end of file
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
android:button="@null" android:button="@null"
android:drawableEnd="@drawable/bg_item_switch_selector" /> 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:id="@+id/clean_item_more"
android:layout_width="30dp" android:layout_width="30dp"
android:layout_height="30dp" android:layout_height="30dp"
......
...@@ -149,7 +149,7 @@ ...@@ -149,7 +149,7 @@
<!-- android:visibility="gone"--> <!-- android:visibility="gone"-->
<!-- app:lottie_loop="true"/>--> <!-- app:lottie_loop="true"/>-->
<com.xm.test.myfilemaster.view.CirclePgBar <com.xm.test.myfile.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"/>
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:background="#6F98ED" android:layout_height="match_parent"
android:layout_height="match_parent"> android:background="#6F98ED">
<LinearLayout <LinearLayout
android:id="@+id/start_rules" android:id="@+id/start_rules"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="30dp" android:layout_marginTop="30dp"
android:layout_width="match_parent" android:layout_marginEnd="16dp"
android:background="@drawable/start_app_rules_shape" android:background="@drawable/start_app_rules_shape"
android:layout_height="wrap_content"
android:orientation="vertical"> android:orientation="vertical">
<ImageView <ImageView
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="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 <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:layout_marginBottom="30dp"
android:text="File Manager Ultra"
android:textColor="@color/white" android:textColor="@color/white"
android:textStyle="bold"
android:textSize="24sp" android:textSize="24sp"
android:layout_marginBottom="30dp" android:textStyle="bold" />
android:text="File Manager Ultra"/>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:textColor="@color/white"
android:textSize="12sp"
android:layout_marginBottom="34dp" android:layout_marginBottom="34dp"
android:text="@string/rulos_text"/> android:text="@string/rules_text"
android:textColor="@color/white"
android:textSize="12sp" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:layout_marginTop="16dp"
android:layout_below="@+id/start_rules"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_centerHorizontal="true"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@+id/start_rules"
android:layout_centerHorizontal="true"
android:layout_marginTop="16dp"
android:orientation="horizontal"> android:orientation="horizontal">
<TextView <TextView
android:textSize="12sp"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="By continuing to use it, you agree "
android:textColor="@color/white" android:textColor="@color/white"
android:text="By continuing to use it, you agree"/> android:textSize="12sp" />
<TextView <TextView
android:textSize="12sp" android:id="@+id/tv_terms"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Terms of use"
android:textColor="#286EFD" 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> </LinearLayout>
<RelativeLayout <RelativeLayout
android:id="@+id/start_app_btn" android:id="@+id/start_app_btn"
android:background="@drawable/start_app_btn_shape"
android:layout_width="224dp" android:layout_width="224dp"
android:layout_height="36dp" android:layout_height="36dp"
android:elevation="10dp"
android:layout_alignParentBottom="true" android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="16dp" android:layout_marginBottom="16dp"
android:layout_centerHorizontal="true"> android:background="@drawable/start_app_btn_shape"
android:elevation="10dp">
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@color/style_background" android:layout_centerInParent="true"
android:text="START" android:text="START"
android:textColor="@color/style_background"
android:textSize="19dp" android:textSize="19dp"
android:layout_centerInParent="true" android:textStyle="bold" />
android:textStyle="bold"/>
</RelativeLayout> </RelativeLayout>
......
...@@ -5,4 +5,5 @@ ...@@ -5,4 +5,5 @@
<color name="progress_background">#95B5FE</color> <color name="progress_background">#95B5FE</color>
<color name="style_background">#3889FD</color> <color name="style_background">#3889FD</color>
<color name="style_grey">#B2B2B2</color> <color name="style_grey">#B2B2B2</color>
<color name="color_6185d3">#6185D3</color>
</resources> </resources>
\ No newline at end of file
<resources> <resources>
<string name="app_name">FileManager</string> <string name="app_name">File Manager Ultra</string>
<string name="file_manager">File Manager</string> <string name="file_manager">File Manager</string>
<string name="home">Home</string> <string name="home">Home</string>
<string name="file_manager_ultra">File Manager Ultra</string> <string name="file_manager_ultra">File Manager Ultra</string>
...@@ -27,13 +27,15 @@ ...@@ -27,13 +27,15 @@
<string name="go_to_settings">Go To Settings</string> <string name="go_to_settings">Go To Settings</string>
<string name="no_files_found">No Files Found</string> <string name="no_files_found">No Files Found</string>
<string name="view">View</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="similar">%s similar</string>
<string name="turn_off_the_hotspot">Turn %s the hotspot</string> <string name="turn_off_the_hotspot">Turn %s the hotspot</string>
<string name="turn_off_bluetooth">Turn %s bluetooth</string> <string name="turn_off_bluetooth">Turn %s bluetooth</string>
<string name="turn_on_auto_brightness">Turn %s auto-brightness</string> <string name="turn_on_auto_brightness">Turn %s auto-brightness</string>
<string name="turn_off_gps">Turn %s GPS</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="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="terms_of_use_privacy_policy"><![CDATA[Terms of use & Privacy PoliCy]]></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> </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