Commit 3679db97 authored by wanglei's avatar wanglei

=======================同步到5.18号主包==================

parent 64a902a1
package com.zxhyis.tools
import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.Assert.*
/**
* Instrumented test, which will execute on an Android device.
*
* See [testing documentation](http://d.android.com/tools/testing).
*/
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
@Test
fun useAppContext() {
// Context of the app under test.
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
assertEquals("com.zxhyis.tools", appContext.packageName)
}
}
\ No newline at end of file
...@@ -73,6 +73,15 @@ ...@@ -73,6 +73,15 @@
</intent-filter> </intent-filter>
</activity> </activity>
<activity
android:name=".ui.page.PermissionTripActivity"
android:screenOrientation="portrait"
android:theme="@style/FullScreenTheme.Null"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".ui.page.GuestActivity"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity <activity
android:name=".ui.page.webview.PrivacyWebActivity" android:name=".ui.page.webview.PrivacyWebActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
......
{"v":"5.5.7","fr":60,"ip":0,"op":60,"w":640,"h":140,"nm":"合成 1","ddd":0,"assets":[{"id":"image_0","w":157,"h":175,"u":"images/","p":"img_0.png","e":0},{"id":"image_1","w":86,"h":50,"u":"images/","p":"img_1.png","e":0},{"id":"image_2","w":540,"h":114,"u":"images/","p":"img_2.png","e":0}],"layers":[{"ddd":0,"ind":1,"ty":2,"nm":"bu.png","cl":"png","refId":"image_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[518,94.5,0],"to":[5.917,0,0],"ti":[-5.917,0,0]},{"t":30,"s":[553.5,94.5,0]}],"ix":2},"a":{"a":0,"k":[78.5,87.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":2,"nm":"on.png","cl":"png","refId":"image_1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":22,"s":[0]},{"t":31,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[502.25,57.5,0],"ix":2},"a":{"a":0,"k":[43,25,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":2,"nm":"qx2.png","cl":"png","refId":"image_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[320,57,0],"ix":2},"a":{"a":0,"k":[270,57,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
{"v":"5.4.4","fr":60,"ip":0,"op":60,"w":680,"h":130,"nm":"switch","ddd":0,"assets":[{"id":"image_0","w":138,"h":153,"u":"images/","p":"img_0.png","e":0},{"id":"image_1","w":52,"h":52,"u":"images/","p":"img_1.png","e":0},{"id":"image_2","w":52,"h":52,"u":"images/","p":"img_2.png","e":0},{"id":"image_3","w":680,"h":130,"u":"images/","p":"img_3.png","e":0}],"layers":[{"ddd":0,"ind":1,"ty":2,"nm":"hand.png","cl":"png","refId":"image_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[605.5,95,0],"e":[649.5,95,0],"to":[7.333,0,0],"ti":[-7.333,0,0]},{"t":33}],"ix":2},"a":{"a":0,"k":[69,76.5,0],"ix":1},"s":{"a":0,"k":[86,86,100],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":2,"nm":"on.png","cl":"png","refId":"image_1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":15,"s":[0],"e":[100]},{"t":25}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[582.5,68.5,0],"e":[626.5,68.5,0],"to":[7.333,0,0],"ti":[-7.333,0,0]},{"t":33}],"ix":2},"a":{"a":0,"k":[26,26,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":2,"nm":"off.png","cl":"png","refId":"image_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[582.5,68.5,0],"e":[626.5,68.5,0],"to":[7.333,0,0],"ti":[-7.333,0,0]},{"t":33}],"ix":2},"a":{"a":0,"k":[26,26,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":2,"nm":"permission_tips.png","cl":"png","refId":"image_3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[340,65,0],"ix":2},"a":{"a":0,"k":[340,65,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
...@@ -12,7 +12,7 @@ object AdUtils { ...@@ -12,7 +12,7 @@ object AdUtils {
fun isShowAd(slot: String): Boolean { fun isShowAd(slot: String): Boolean {
val adEntity = ComUtils.getAdPositionData(slot) val adEntity = ComUtils.getAdPositionData(slot)
if (!PushManager.newUserPush(adEntity.new_user_avoid_time)) { if (!PushStrategy.newUserPush(adEntity.new_user_avoid_time)) {
return false return false
} }
if (!UserChancelEx.getUserChancelSwitch(adEntity.is_show)) { if (!UserChancelEx.getUserChancelSwitch(adEntity.is_show)) {
......
...@@ -48,6 +48,14 @@ object ConfigHelper { ...@@ -48,6 +48,14 @@ object ConfigHelper {
field = value field = value
SPUtils.getInstance().put("ifAgreePrivacy", value, true) SPUtils.getInstance().put("ifAgreePrivacy", value, true)
} }
var ifGuest = false
get() {
return SPUtils.getInstance().getBoolean("ifGuest", field)
}
set(value) {
field = value
SPUtils.getInstance().put("ifGuest", value, true)
}
var gid = "" var gid = ""
const val openAdmobId = "/6499/example/app-open" const val openAdmobId = "/6499/example/app-open"
const val interAdmobId = "ca-app-pub-3940256099942544/1033173712" const val interAdmobId = "ca-app-pub-3940256099942544/1033173712"
......
...@@ -16,7 +16,10 @@ import com.blankj.utilcode.util.ActivityUtils ...@@ -16,7 +16,10 @@ import com.blankj.utilcode.util.ActivityUtils
import com.blankj.utilcode.util.PermissionUtils import com.blankj.utilcode.util.PermissionUtils
import com.zxhyis.toolss.ad.EventHelper import com.zxhyis.toolss.ad.EventHelper
import com.zxhyis.toolss.logic.ActivityCollector import com.zxhyis.toolss.logic.ActivityCollector
import com.zxhyis.toolss.ui.dialog.DialogViews
import com.zxhyis.toolss.ui.home.MainActivity import com.zxhyis.toolss.ui.home.MainActivity
import com.zxhyis.toolss.ui.page.PermissionTripActivity
import org.json.JSONObject
abstract class TopActivity<T : ViewBinding> : AppCompatActivity() { abstract class TopActivity<T : ViewBinding> : AppCompatActivity() {
...@@ -36,9 +39,9 @@ abstract class TopActivity<T : ViewBinding> : AppCompatActivity() { ...@@ -36,9 +39,9 @@ abstract class TopActivity<T : ViewBinding> : AppCompatActivity() {
abstract fun init() abstract fun init()
companion object { // companion object {
private var requestPermissionCount = 3 // private var requestPermissionCount = 3
} // }
private val permissionLauncher = private val permissionLauncher =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
...@@ -47,7 +50,16 @@ abstract class TopActivity<T : ViewBinding> : AppCompatActivity() { ...@@ -47,7 +50,16 @@ abstract class TopActivity<T : ViewBinding> : AppCompatActivity() {
} }
} }
open fun onPermissionsResult(isGranted: Boolean) {} open fun onPermissionsResult(isGranted: Boolean) {
val obj = JSONObject()
obj.put("activity", javaClass.simpleName)
if (isGranted) {
EventHelper.event("permission_allow", ext = obj)
} else {
EventHelper.event("permission_deny", ext = obj)
}
}
private var isRequested = false private var isRequested = false
fun checkPermission(needcheck: Boolean = false) { fun checkPermission(needcheck: Boolean = false) {
if (needcheck) { if (needcheck) {
...@@ -59,7 +71,7 @@ abstract class TopActivity<T : ViewBinding> : AppCompatActivity() { ...@@ -59,7 +71,7 @@ abstract class TopActivity<T : ViewBinding> : AppCompatActivity() {
} }
) )
} else { } else {
if (isRequested || requestPermissionCount <= 0) { if (isRequested) {
onPermissionsResult( onPermissionsResult(
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
Environment.isExternalStorageManager() Environment.isExternalStorageManager()
...@@ -70,22 +82,22 @@ abstract class TopActivity<T : ViewBinding> : AppCompatActivity() { ...@@ -70,22 +82,22 @@ abstract class TopActivity<T : ViewBinding> : AppCompatActivity() {
return return
} }
isRequested = true isRequested = true
requestPermissionCount-- // requestPermissionCount--
} }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
if (Environment.isExternalStorageManager()) { if (Environment.isExternalStorageManager()) {
onPermissionsResult(true) onPermissionsResult(true)
} else { } else {
DialogViews.showGerPermisson(this, {
val intent = val intent =
Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION) Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
intent.addCategory("android.intent.category.DEFAULT") intent.addCategory("android.intent.category.DEFAULT")
intent.data = Uri.parse("package:${packageName}") intent.data = Uri.parse("package:${packageName}")
permissionLauncher.launch(intent) permissionLauncher.launch(intent)
// DialogViews.showGerPermisson(this,{ PermissionTripActivity.launch(this)
// }, {
// },{ finishToMain()
// })
// })
} }
} else { } else {
...@@ -192,6 +204,14 @@ abstract class TopActivity<T : ViewBinding> : AppCompatActivity() { ...@@ -192,6 +204,14 @@ abstract class TopActivity<T : ViewBinding> : AppCompatActivity() {
} }
open fun onAccesSettingsResult(isGranted: Boolean) {} open fun onAccesSettingsResult(isGranted: Boolean) {
val obj = JSONObject()
obj.put("activity", javaClass.simpleName)
if (isGranted) {
EventHelper.event("permission_allow", ext = obj)
} else {
EventHelper.event("permission_deny", ext = obj)
}
}
} }
...@@ -6,6 +6,7 @@ import android.graphics.Color ...@@ -6,6 +6,7 @@ import android.graphics.Color
import android.graphics.drawable.ColorDrawable import android.graphics.drawable.ColorDrawable
import android.view.LayoutInflater import android.view.LayoutInflater
import com.blankj.utilcode.util.ClickUtils import com.blankj.utilcode.util.ClickUtils
import com.blankj.utilcode.util.SpanUtils
import com.zxhyis.toolss.databinding.DialogLayoutFlowTypeBinding import com.zxhyis.toolss.databinding.DialogLayoutFlowTypeBinding
import com.zxhyis.toolss.databinding.DialogLayoutLastStepBinding import com.zxhyis.toolss.databinding.DialogLayoutLastStepBinding
import com.zxhyis.toolss.databinding.DialogPermissonOpenBinding import com.zxhyis.toolss.databinding.DialogPermissonOpenBinding
...@@ -17,21 +18,36 @@ object DialogViews { ...@@ -17,21 +18,36 @@ object DialogViews {
dialog.requestWindowFeature(1) dialog.requestWindowFeature(1)
dialog.window!!.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) dialog.window!!.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
dialog.window!!.setLayout(-1, -1) dialog.window!!.setLayout(-1, -1)
dialog.setCanceledOnTouchOutside(true) dialog.setCanceledOnTouchOutside(false)
dialog.setCancelable(true) dialog.setCancelable(false)
dialog.setContentView(binding.root) dialog.setContentView(binding.root)
binding.root.setOnClickListener { SpanUtils.with(binding.idTvTt)
.append("Allow File Manager Select to access ")
.setFontSize(13, true)
.setForegroundColor(0xFF999999.toInt())
.append("All Files Access ")
.setBold()
.setFontSize(13, true)
.setForegroundColor(0xFF4273FF.toInt())
.append("permission to manage files of your device?")
.setFontSize(13, true)
.setForegroundColor(0xFF999999.toInt())
.create()
binding.idFullLottie.imageAssetsFolder = "full_file_permission/images/"
binding.idFullLottie.setAnimation("full_file_permission/data.json")
binding.idFullLottie.playAnimation()
binding.idDeny.setOnClickListener {
dialog.dismiss() dialog.dismiss()
onClose2?.invoke() onClose2?.invoke()
} }
binding.idAllow.setOnClickListener { binding.idTvAllow.setOnClickListener {
dialog.dismiss() dialog.dismiss()
onClose?.invoke() onClose?.invoke()
} }
dialog.show() dialog.show()
} }
fun showBothtypes(context: Context, onClick: (potion: Int) -> Unit) { fun showBothTypes(context: Context, onClick: (potion: Int) -> Unit) {
val dialog = Dialog(context) val dialog = Dialog(context)
val binding = DialogLayoutFlowTypeBinding.inflate(LayoutInflater.from(context)) val binding = DialogLayoutFlowTypeBinding.inflate(LayoutInflater.from(context))
dialog.requestWindowFeature(1) dialog.requestWindowFeature(1)
...@@ -76,4 +92,5 @@ object DialogViews { ...@@ -76,4 +92,5 @@ object DialogViews {
dialog.show() dialog.show()
} }
} }
\ No newline at end of file
package com.zxhyis.toolss.ui.dialog
import android.view.Gravity
import android.view.ViewGroup
import android.widget.PopupWindow
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.updatePadding
import com.blankj.utilcode.util.BarUtils
import com.zxhyis.toolss.databinding.DialogBottomLayoutFileBinding
class PermissionPopWindow(private val activity: AppCompatActivity, val onClick: () -> Unit) :
PopupWindow() {
init {
width = ViewGroup.LayoutParams.MATCH_PARENT
height = ViewGroup.LayoutParams.MATCH_PARENT
isOutsideTouchable = false
isFocusable = true
isClippingEnabled = false
}
private val binding by lazy {
DialogBottomLayoutFileBinding.inflate(activity.layoutInflater)
}
fun show() {
contentView = binding.root
activity.window.decorView.post {
binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
BarUtils.setStatusBarLightMode(activity, false)
showAtLocation(activity.window.decorView, Gravity.BOTTOM, 0, 100)
}
binding.idLottieFullFile.imageAssetsFolder = "permission_guide/images/"
binding.idLottieFullFile.setAnimation("permission_guide/data.json")
binding.idLottieFullFile.playAnimation()
binding.idFrameLayout.setOnClickListener {
dismiss()
onClick.invoke()
}
binding.idLlContent.setOnClickListener {
dismiss()
onClick.invoke()
}
}
override fun dismiss() {
super.dismiss()
BarUtils.setStatusBarLightMode(activity, true)
}
}
\ No newline at end of file
package com.zxhyis.toolss.ui.page
import android.graphics.Color
import com.blankj.utilcode.util.BarUtils
import com.zxhyis.toolss.ad.ConfigHelper
import com.zxhyis.toolss.base.TopActivity
import com.zxhyis.toolss.databinding.ActivityLayoutGuestBinding
import com.zxhyis.toolss.logic.startActivity
import kotlin.random.Random
class GuestActivity : TopActivity<ActivityLayoutGuestBinding>() {
override fun getViewBinding1(): ActivityLayoutGuestBinding {
return ActivityLayoutGuestBinding.inflate(layoutInflater)
}
override fun init() {
BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
ConfigHelper.ifGuest = true
vb.idLottie.imageAssetsFolder = "saomiao/images/"
vb.idLottie.setAnimation("saomiao/data.json")
vb.idLottie.playAnimation()
loadPro()
}
private var mProgress = 0
private fun loadPro() {
if (mProgress >= 100) {
vb.idSJindu.progress = mProgress
startActivity<CleanGuestActivity>()
return
}
vb.idSJindu.postDelayed(Runnable {
mProgress += Random.nextInt(5)
vb.idSJindu.progress = mProgress
loadPro()
}, 80)
}
}
\ No newline at end of file
...@@ -117,7 +117,7 @@ class NetWorkActivity : TopActivity<ActivityLayoutNetworkBinding>() { ...@@ -117,7 +117,7 @@ class NetWorkActivity : TopActivity<ActivityLayoutNetworkBinding>() {
setData() setData()
} }
vb.idTvTypes.setOnClick(javaClass.simpleName) { vb.idTvTypes.setOnClick(javaClass.simpleName) {
DialogViews.showBothtypes(this) { DialogViews.showBothTypes(this) {
when (it) { when (it) {
0 -> { 0 -> {
vb.idTvTypes.text = "Mobile network" vb.idTvTypes.text = "Mobile network"
......
package com.zxhyis.toolss.ui.page
import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.os.Handler
import androidx.appcompat.app.AppCompatActivity
import com.zxhyis.toolss.R
import com.zxhyis.toolss.ui.dialog.PermissionPopWindow
class PermissionTripActivity : AppCompatActivity() {
companion object {
fun launch(activity: Activity) {
activity.startActivity(
Intent(activity, PermissionTripActivity::class.java)
)
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_layout_permisson_trip)
initView()
}
private fun initView() {
Handler().postDelayed({
PermissionPopWindow(this) {
finish()
}.show()
}, 500)
}
}
\ No newline at end of file
...@@ -108,6 +108,12 @@ class SplashActivity : TopActivity<ActivityLayoutSplashBinding>() { ...@@ -108,6 +108,12 @@ class SplashActivity : TopActivity<ActivityLayoutSplashBinding>() {
ConfigHelper.ifAgreePrivacy = true ConfigHelper.ifAgreePrivacy = true
(application as FileApp).initApplication() (application as FileApp).initApplication()
loadAd() loadAd()
val intent = Intent(this, NotificationService::class.java)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(intent)
} else {
startService(intent)
}
} else { } else {
ToastUtils.showShort("Please agree the terms to use App functions") ToastUtils.showShort("Please agree the terms to use App functions")
} }
...@@ -202,103 +208,114 @@ class SplashActivity : TopActivity<ActivityLayoutSplashBinding>() { ...@@ -202,103 +208,114 @@ class SplashActivity : TopActivity<ActivityLayoutSplashBinding>() {
return return
} }
jump = true jump = true
val JumpType = intent.getIntExtra("type", 0) var jumpType = intent.getIntExtra("type", 0)
LogEx.logDebug(TAG, "JumpType=$JumpType")
when (JumpType) { if (jumpType == 0) {
val uri = intent.data
val str = (uri?.getQueryParameter("type") ?: "0")
jumpType = str.toIntOrNull() ?: 0
LogEx.logDebug(TAG, "jumpType==0 JumpType=$jumpType")
}
LogEx.logDebug(TAG, "JumpType=$jumpType")
when (jumpType) {
//=================================主动广播======================================= //=================================主动广播=======================================
PushCfg.ID_JUNK_CLEAN_PUSH -> { PushCfg.ID_JUNK_CLEAN_PUSH -> {
startActivity<PrepareScanActivity>() startActivity<PrepareScanActivity>()
EventHelper.event("notification_jump", "JumpType=$JumpType activity=PrepareScanActivity") EventHelper.event("notification_jump", "JumpType=$jumpType activity=PrepareScanActivity")
} }
PushCfg.ID_VIRUS_PUSH -> { PushCfg.ID_VIRUS_PUSH -> {
startActivity<VirusActivity>() startActivity<VirusActivity>()
EventHelper.event("notification_jump", "JumpType=$JumpType activity=VirusActivity") EventHelper.event("notification_jump", "JumpType=$jumpType activity=VirusActivity")
} }
PushCfg.ID_BIGFILE_PUSH -> { PushCfg.ID_BIGFILE_PUSH -> {
startActivity<BigFileCleanActivity>() startActivity<BigFileCleanActivity>()
EventHelper.event("notification_jump", "JumpType=$JumpType activity=BigFileCleanActivity") EventHelper.event("notification_jump", "JumpType=$jumpType activity=BigFileCleanActivity")
} }
PushCfg.ID_PHOTO_COMPRESS -> { PushCfg.ID_PHOTO_COMPRESS -> {
startActivity<StartCompressionPhotoActivity>() startActivity<StartCompressionPhotoActivity>()
EventHelper.event("notification_jump", "JumpType=$JumpType activity=StartCompressionPhotoActivity") EventHelper.event("notification_jump", "JumpType=$jumpType activity=StartCompressionPhotoActivity")
} }
PushCfg.ID_APP_MANAGER -> { PushCfg.ID_APP_MANAGER -> {
startActivity<AppManager2Activity>() startActivity<AppManager2Activity>()
EventHelper.event("notification_jump", "JumpType=$JumpType activity=AppManager2Activity") EventHelper.event("notification_jump", "JumpType=$jumpType activity=AppManager2Activity")
} }
PushCfg.ID_NETWORK_TRAFFIC -> { PushCfg.ID_NETWORK_TRAFFIC -> {
startActivity<NetWorkActivity>() startActivity<NetWorkActivity>()
EventHelper.event("notification_jump", "JumpType=$JumpType activity=NetWorkActivity") EventHelper.event("notification_jump", "JumpType=$jumpType activity=NetWorkActivity")
} }
PushCfg.ID_CLEAN_NOTIFICATION -> { PushCfg.ID_CLEAN_NOTIFICATION -> {
if (SPUtils.getInstance().getBoolean("notification_guest", false)) { if (SPUtils.getInstance().getBoolean("notification_guest", false)) {
startActivity(Intent(this, NotificationCleanActivity::class.java)) startActivity(Intent(this, NotificationCleanActivity::class.java))
EventHelper.event("notification_jump", "JumpType=$JumpType activity=NotificationCleanActivity") EventHelper.event("notification_jump", "JumpType=$jumpType activity=NotificationCleanActivity")
} else { } else {
startActivity(Intent(this, NotificationGuestActivity::class.java)) startActivity(Intent(this, NotificationGuestActivity::class.java))
EventHelper.event("notification_jump", "JumpType=$JumpType activity=NotificationGuestActivity") EventHelper.event("notification_jump", "JumpType=$jumpType activity=NotificationGuestActivity")
} }
} }
PushCfg.ID_RECENT_USE_APP -> { PushCfg.ID_RECENT_USE_APP -> {
startActivity<RecentAppActivity>() startActivity<RecentAppActivity>()
EventHelper.event("notification_jump", "JumpType=$JumpType activity=RecentAppActivity") EventHelper.event("notification_jump", "JumpType=$jumpType activity=RecentAppActivity")
} }
PushCfg.ID_SIMILAR_IMAGE -> { PushCfg.ID_SIMILAR_IMAGE -> {
startActivity<RepeaterdPhotoActivity>() startActivity<RepeaterdPhotoActivity>()
EventHelper.event("notification_jump", "JumpType=$JumpType activity=RepeaterdPhotoActivity") EventHelper.event("notification_jump", "JumpType=$jumpType activity=RepeaterdPhotoActivity")
} }
PushCfg.ID_CLEAN_SPEAKER -> { PushCfg.ID_CLEAN_SPEAKER -> {
startActivity<SpeakerCleanerActivity>() startActivity<SpeakerCleanerActivity>()
EventHelper.event("notification_jump", "JumpType=$JumpType activity=SpeakerCleanerActivity") EventHelper.event("notification_jump", "JumpType=$jumpType activity=SpeakerCleanerActivity")
} }
PushCfg.ID_BATTERY_OPTIMIZATION -> { PushCfg.ID_BATTERY_OPTIMIZATION -> {
startActivity<BatteryOptimizerActivity>() startActivity<BatteryOptimizerActivity>()
EventHelper.event("notification_jump", "JumpType=$JumpType activity=BatteryOptimizerActivity") EventHelper.event("notification_jump", "JumpType=$jumpType activity=BatteryOptimizerActivity")
} }
//================================被动广播========================================= //================================被动广播=========================================
PushCfg.ID_INSTALL_PACKAGE_PUSH -> { PushCfg.ID_INSTALL_PACKAGE_PUSH -> {
startActivity<VirusActivity>() startActivity<VirusActivity>()
EventHelper.event("notification_jump", "JumpType=$JumpType activity=VirusActivity") EventHelper.event("notification_jump", "JumpType=$jumpType activity=VirusActivity")
} }
PushCfg.ID_UNINSTALL_PACKAGE_PUSH -> { PushCfg.ID_UNINSTALL_PACKAGE_PUSH -> {
startActivity<PrepareScanActivity>() startActivity<PrepareScanActivity>()
EventHelper.event("notification_jump", "JumpType=$JumpType activity=PrepareScanActivity") EventHelper.event("notification_jump", "JumpType=$jumpType activity=PrepareScanActivity")
} }
PushCfg.ID_CHARGE -> { PushCfg.ID_CHARGE -> {
startActivity<BatteryInfoActivity>() startActivity<BatteryInfoActivity>()
EventHelper.event("notification_jump", "JumpType=$JumpType activity=BatteryInfoActivity") EventHelper.event("notification_jump", "JumpType=$jumpType activity=BatteryInfoActivity")
} }
PushCfg.ID_LOW_BATTERY_PUSH -> { PushCfg.ID_LOW_BATTERY_PUSH -> {
startActivity<BatteryInfoActivity>() startActivity<BatteryInfoActivity>()
EventHelper.event("notification_jump", "JumpType=$JumpType activity=BatteryInfoActivity") EventHelper.event("notification_jump", "JumpType=$jumpType activity=BatteryInfoActivity")
} }
PushCfg.ID_PHONE_ACCELERATE -> { PushCfg.ID_PHONE_ACCELERATE -> {
startActivity<SpeedActivity>() startActivity<SpeedActivity>()
EventHelper.event("notification_jump", "JumpType=$JumpType activity=SpeedActivity") EventHelper.event("notification_jump", "JumpType=$jumpType activity=SpeedActivity")
} }
else -> { else -> {
val isHotLaunch = intent?.extras?.getBoolean("isHotLaunch", false) ?: false val isHotLaunch = intent?.extras?.getBoolean("isHotLaunch", false) ?: false
if (!isHotLaunch) { if (!isHotLaunch) {
// startActivity<StartPageActivity>() if (!ConfigHelper.ifGuest) {
startActivity<GuestActivity>()
} else {
startActivity<MainActivity>() startActivity<MainActivity>()
} }
}
} }
} }
......
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<corners android:radius="8dp" />
<solid android:color="#334773FF" />
<padding
android:bottom="2dp"
android:left="2dp"
android:right="2dp"
android:top="2dp" />
</shape>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="8dp" />
<solid android:color="#4773FF" />
</shape>
</clip>
</item>
</layer-list>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/id_lottie"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
app:lottie_autoPlay="true"
app:lottie_loop="true" />
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:orientation="vertical">
<ProgressBar
android:id="@+id/id_s_jindu"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="16dp"
android:layout_marginHorizontal="65dp"
android:progressDrawable="@drawable/guest_pro_bg" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginVertical="20dp"
android:text="Scanning the phone......"
android:textColor="#000000"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginHorizontal="67dp"
android:layout_marginBottom="100dp"
android:gravity="center"
android:lineSpacingExtra="2dp"
android:text="Attention:To find junk files completely,the first scan may take a little time"
android:textColor="#999999"
android:textSize="12sp" />
</androidx.appcompat.widget.LinearLayoutCompat>
</FrameLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/id_frame_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#B3000000">
<com.noober.background.view.BLLinearLayout
android:id="@+id/id_ll_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:orientation="vertical"
app:bl_corners_topLeftRadius="10dp"
app:bl_corners_topRightRadius="10dp"
app:bl_solid_color="#4773FF">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="14dp"
android:layout_marginEnd="39dp"
android:layout_marginBottom="15dp"
android:text="Enable storage permission by granting access to File Manager Select"
android:textColor="@color/white"
android:textSize="13sp" />
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/id_lottie_full_file"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="14dp"
android:layout_marginBottom="12dp"
app:lottie_autoPlay="true"
app:lottie_loop="true" />
</com.noober.background.view.BLLinearLayout>
</FrameLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<com.noober.background.view.BLLinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
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" android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginHorizontal="16dp" android:orientation="vertical">
<com.noober.background.view.BLLinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="27dp"
android:orientation="vertical" android:orientation="vertical"
app:bl_corners_radius="10dp" app:bl_corners_radius="10dp"
app:bl_solid_color="@color/white"> app:bl_solid_color="@color/white">
<androidx.appcompat.widget.AppCompatImageView <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_margin="24dp" android:layout_marginTop="24dp"
android:adjustViewBounds="true" /> android:text="Permission request"
android:textColor="#000000"
android:textSize="17sp"
android:textStyle="bold" />
<TextView <TextView
android:id="@+id/id_tv_tt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginHorizontal="15dp"
android:layout_marginTop="22dp"
android:layout_marginBottom="38dp"
android:textSize="13sp" />
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/id_full_lottie"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp" android:adjustViewBounds="true"
android:text="Find Clean Master,And ensure that it has been turned on. (If not found, please swipe the page)" app:lottie_autoPlay="true"
app:lottie_loop="true" />
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="23dp"
android:layout_marginTop="40dp"
android:layout_marginBottom="14dp">
<com.noober.background.view.BLTextView
android:id="@+id/id_deny"
android:layout_width="0dp"
android:layout_height="36dp"
android:layout_marginEnd="13dp"
android:layout_weight="1"
android:gravity="center"
android:text="Deny"
android:textColor="#000000" android:textColor="#000000"
android:textSize="15sp" android:textSize="17sp"
tools:ignore="HardcodedText" /> app:bl_corners_radius="18dp"
app:bl_solid_color="#F5F5F5" />
<com.noober.background.view.BLTextView <com.noober.background.view.BLTextView
android:id="@+id/id_allow" android:id="@+id/id_tv_allow"
android:layout_width="100dp" android:layout_width="0dp"
android:layout_height="40dp" android:layout_height="36dp"
android:layout_gravity="end" android:layout_weight="1"
android:layout_marginTop="20dp"
android:layout_marginEnd="24dp"
android:layout_marginBottom="18dp"
android:gravity="center" android:gravity="center"
android:text="Allow" android:text="Allow"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="15sp" android:textSize="17sp"
app:bl_corners_radius="20dp" app:bl_corners_radius="18dp"
app:bl_solid_color="#6A30F2" app:bl_solid_color="#4273FF" />
tools:ignore="HardcodedText" />
</com.noober.background.view.BLLinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>
\ No newline at end of file </com.noober.background.view.BLLinearLayout>
</androidx.appcompat.widget.LinearLayoutCompat>
\ No newline at end of file
<resources> <resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. --> <!-- Base application theme. -->
<style name="Base.Theme.FileManagerSelect" parent="Theme.Material3.DayNight.NoActionBar"> <style name="Base.Theme.FileManagerSelect" parent="Theme.Material3.DayNight.NoActionBar">
<!-- Customize your light theme here. --> <!-- Customize your light theme here. -->
...@@ -29,11 +29,11 @@ ...@@ -29,11 +29,11 @@
</style> </style>
<style name="Theme.tool" parent="Theme.MaterialComponents.Light.NoActionBar"> <style name="Theme.tool" parent="Theme.MaterialComponents.Light.NoActionBar">
<item name="colorPrimary">@color/tool_color</item> <item name="colorPrimary">@color/color_6a30f2</item>
<item name="colorPrimaryVariant">@color/tool_color</item> <item name="colorPrimaryVariant">@color/color_6a30f2</item>
<item name="colorOnPrimary">@color/white</item> <item name="colorOnPrimary">@color/white</item>
<item name="colorSecondary">@color/tool_color</item> <item name="colorSecondary">@color/color_6a30f2</item>
<item name="colorSecondaryVariant">@color/tool_color</item> <item name="colorSecondaryVariant">@color/color_6a30f2</item>
<item name="colorOnSecondary">@color/black</item> <item name="colorOnSecondary">@color/black</item>
<item name="android:statusBarColor">?attr/colorPrimaryVariant</item> <item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
</style> </style>
...@@ -101,4 +101,50 @@ ...@@ -101,4 +101,50 @@
<item name="android:windowBackground">@drawable/splsh_bp</item> <item name="android:windowBackground">@drawable/splsh_bp</item>
<item name="android:windowFullscreen">true</item> <item name="android:windowFullscreen">true</item>
</style> </style>
<style name="FullScreenTheme.Null" parent="Theme.AppCompat.Light.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowBackground">#00000000</item>
<item name="android:windowFullscreen">false</item>
<!-- true -->
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowDisablePreview">true</item>
<!-- 透明掉状态栏,设置为true,状态栏有阴影,false则无阴影 -->
<item name="android:windowTranslucentStatus" tools:ignore="NewApi">false</item>
<!-- 设置状态栏颜色为透明色 -->
<item name="android:statusBarColor" tools:ignore="NewApi">@android:color/transparent</item>
<item name="android:windowAnimationStyle">@style/activity_no_anim</item>
<!-- 窗体没有边框 -->
<item name="android:windowFrame">@null</item>
<!-- 窗体不包含标题栏 -->
<item name="android:windowNoTitle">true</item>
<!-- 窗体悬浮 -->
<!-- <item name="android:windowIsFloating">true</item>-->
<!-- 自定义TitleBar时去掉多余的阴影-->
<item name="android:windowContentOverlay">@null</item>
<!-- 不允许窗体背景变暗-->
<item name="android:backgroundDimEnabled">false</item>
<!-- 窗体切换无动画-->
<item name="android:windowNoDisplay">false</item>
</style>
<style name="activity_no_anim" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@null</item>
<item name="android:activityOpenExitAnimation">@null</item>
<item name="android:activityCloseEnterAnimation">@null</item>
<item name="android:activityCloseExitAnimation">@null</item>
<item name="android:taskOpenEnterAnimation">@null</item>
<item name="android:taskOpenExitAnimation">@null</item>
<item name="android:taskCloseEnterAnimation">@null</item>
<item name="android:taskCloseExitAnimation">@null</item>
<item name="android:taskToFrontEnterAnimation">@null</item>
<item name="android:taskToFrontExitAnimation">@null</item>
<item name="android:taskToBackEnterAnimation">@null</item>
<item name="android:taskToBackExitAnimation">@null</item>
</style>
<color name="color_6a30f2">#6A30F2</color>
</resources> </resources>
\ No newline at end of file
package com.zxhyis.toolss
import org.junit.Test
import org.junit.Assert.*
/**
* Example local unit test, which will execute on the development machine (host).
*
* See [testing documentation](http://d.android.com/tools/testing).
*/
class ExampleUnitTest {
@Test
fun addition_isCorrect() {
assertEquals(4, 2 + 2)
}
}
\ 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