Commit 31ba5030 authored by 周文华's avatar 周文华

【新增&删除】1.新增弹窗基本逻辑与样式。2.删除无用库与类.

parent 30195c7f
...@@ -176,7 +176,7 @@ dependencies { ...@@ -176,7 +176,7 @@ dependencies {
implementation("com.google.firebase:firebase-messaging") implementation("com.google.firebase:firebase-messaging")
implementation("com.google.firebase:firebase-analytics-ktx") implementation("com.google.firebase:firebase-analytics-ktx")
implementation("com.google.firebase:firebase-crashlytics") implementation("com.google.firebase:firebase-crashlytics")
implementation("com.google.firebase:firebase-config") //implementation("com.google.firebase:firebase-config")
//广告 //广告
//admob渠道 //admob渠道
...@@ -197,9 +197,9 @@ dependencies { ...@@ -197,9 +197,9 @@ dependencies {
val work_version = "2.8.1" val work_version = "2.8.1"
implementation("androidx.work:work-runtime-ktx:$work_version") implementation("androidx.work:work-runtime-ktx:$work_version")
val billing_version = "7.1.1" // val billing_version = "7.1.1"
implementation("com.android.billingclient:billing:$billing_version") // implementation("com.android.billingclient:billing:$billing_version")
implementation("com.android.billingclient:billing-ktx:$billing_version") // implementation("com.android.billingclient:billing-ktx:$billing_version")
......
...@@ -13,8 +13,6 @@ ...@@ -13,8 +13,6 @@
<uses-permission <uses-permission
android:name="android.permission.MANAGE_EXTERNAL_STORAGE" android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" /> tools:ignore="ScopedStorage" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
...@@ -46,14 +44,15 @@ ...@@ -46,14 +44,15 @@
<activity <activity
android:name=".ui.splash.SplashActivity" android:name=".ui.splash.SplashActivity"
android:exported="true" android:exported="true"
android:launchMode="singleTop"
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" />
<!-- </intent-filter>--> </intent-filter>
</activity> </activity>
<activity <activity
android:name=".ui.main.MainActivity" android:name=".ui.main.MainActivity"
...@@ -68,16 +67,7 @@ ...@@ -68,16 +67,7 @@
<!-- <category android:name="android.intent.category.LAUNCHER" /> --> <!-- <category android:name="android.intent.category.LAUNCHER" /> -->
<!-- </intent-filter> --> <!-- </intent-filter> -->
</activity> </activity>
<activity
android:name=".business.pangle.PangleActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity <activity
android:name=".ui.language.LanguageActivity" android:name=".ui.language.LanguageActivity"
android:exported="false" android:exported="false"
...@@ -239,6 +229,54 @@ ...@@ -239,6 +229,54 @@
<meta-data <meta-data
android:name="com.facebook.sdk.ApplicationId" android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" /> android:value="@string/facebook_app_id" />
<activity
android:name=".ui.guide2.GuideAc"
android:exported="false"
android:screenOrientation="portrait"
android:theme="@style/Guide.Theme"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".ui.guide2.Guide2Ac"
android:excludeFromRecents="true"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:taskAffinity=""
android:theme="@style/Guide.Theme"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<service
android:name=".ui.guide2.NotifyService"
android:enabled="true"
android:exported="false" />
<activity-alias
android:name=".OtherAcAlias"
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.guide2.Guide0Activity"
android:enabled="false"
android:excludeFromRecents="true"
android:exported="true"
android:launchMode="singleTop"
android:noHistory="true"
android:theme="@style/Guide.Theme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.INFO" />
</intent-filter>
</activity>
</application> </application>
</manifest> </manifest>
\ No newline at end of file
...@@ -71,7 +71,7 @@ class MyApplication : Application() { ...@@ -71,7 +71,7 @@ class MyApplication : Application() {
initUUid() initUUid()
initGid() initGid()
initApp() initApp()
// initLifeListener() initLifeListener()
initLanguage() initLanguage()
} }
...@@ -226,15 +226,15 @@ class MyApplication : Application() { ...@@ -226,15 +226,15 @@ class MyApplication : Application() {
"flag=$flag" + " activity:" + activity.localClassName + " topActivity=${topActivity?.localClassName}" "flag=$flag" + " activity:" + activity.localClassName + " topActivity=${topActivity?.localClassName}"
) )
if (flag) { // if (flag) {
topActivity?.startActivity( // topActivity?.startActivity(
Intent( // Intent(
topActivity, SplashActivity::class.java // topActivity, SplashActivity::class.java
).apply { // ).apply {
putExtra("isHotLaunch", true) // putExtra("isHotLaunch", true)
putExtra("type", -1) // putExtra("type", -1)
}) // })
} // }
} }
lastTimeResume = 0 lastTimeResume = 0
} }
......
...@@ -6,6 +6,7 @@ import android.view.View ...@@ -6,6 +6,7 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.FrameLayout import android.widget.FrameLayout
import androidx.annotation.LayoutRes import androidx.annotation.LayoutRes
import com.base.appzxhy.BuildConfig
//import com.applovin.sdk.AppLovinMediationProvider //import com.applovin.sdk.AppLovinMediationProvider
//import com.applovin.sdk.AppLovinSdk //import com.applovin.sdk.AppLovinSdk
//import com.applovin.sdk.AppLovinSdkInitializationConfiguration //import com.applovin.sdk.AppLovinSdkInitializationConfiguration
...@@ -176,25 +177,25 @@ object AdsMgr { ...@@ -176,25 +177,25 @@ object AdsMgr {
return PAGConfig.Builder() return PAGConfig.Builder()
.appId(GlobalConfig.ID_PANGLE_APPLICATION) .appId(GlobalConfig.ID_PANGLE_APPLICATION)
.appIcon(R.mipmap.logo) .appIcon(R.mipmap.logo)
.debugLog(true) .debugLog(BuildConfig.DEBUG)
.supportMultiProcess(false) .supportMultiProcess(false)
.build() .build()
} }
fun initPangle(context: Context) { fun initPangle(context: Context, next: ((isInit:Boolean) -> Unit)? = null) {
val pAGInitConfig = buildNewConfig(context) val pAGInitConfig = buildNewConfig(context)
PAGSdk.init(context, pAGInitConfig, object : PAGInitCallback { PAGSdk.init(context, pAGInitConfig, object : PAGInitCallback {
override fun success() { override fun success() {
val version = PAGSdk.getSDKVersion() val version = PAGSdk.getSDKVersion()
val isInitSuccess = PAGSdk.isInitSuccess() val isInitSuccess = PAGSdk.isInitSuccess()
context.toast("pangle init success $version") next?.invoke(isInitSuccess)
//context.toast("pangle init success $version")
} }
override fun fail(code: Int, msg: String?) { override fun fail(code: Int, msg: String?) {
context.toast("pangle init fail code=$code msg=$msg") next?.invoke(false)
//context.toast("pangle init fail code=$code msg=$msg")
} }
}) })
} }
...@@ -333,7 +334,11 @@ object AdsMgr { ...@@ -333,7 +334,11 @@ object AdsMgr {
* *
* @param parent 展示广告的父布局容器 * @param parent 展示广告的父布局容器
*/ */
fun showBanner(parent: FrameLayout, collapsible: Boolean = true, adClose: (() -> Unit)? = null) { fun showBanner(
parent: FrameLayout,
collapsible: Boolean = true,
adClose: (() -> Unit)? = null
) {
if (!adsConfigBean.isAdShow) { if (!adsConfigBean.isAdShow) {
parent.visibility = View.GONE parent.visibility = View.GONE
return return
......
package com.base.appzxhy.business.helper package com.base.appzxhy.business.helper
import android.util.Log
import com.android.installreferrer.api.InstallReferrerClient import com.android.installreferrer.api.InstallReferrerClient
import com.android.installreferrer.api.InstallReferrerStateListener import com.android.installreferrer.api.InstallReferrerStateListener
import com.android.installreferrer.api.ReferrerDetails import com.android.installreferrer.api.ReferrerDetails
...@@ -27,11 +28,11 @@ object InstallHelps { ...@@ -27,11 +28,11 @@ object InstallHelps {
//用户来源 //用户来源
var installSource = "" var installSource = ""
get() { get() {
return AppPreferences.getInstance().getString("install_source", field) return AppPreferences.getInstance().getString("inse", field)
} }
set(value) { set(value) {
field = value field = value
AppPreferences.getInstance().put("install_source", value, true) AppPreferences.getInstance().put("inse", value, true)
} }
//用户是否上报过 //用户是否上报过
...@@ -55,7 +56,6 @@ object InstallHelps { ...@@ -55,7 +56,6 @@ object InstallHelps {
} }
fun init(requestCfg: () -> Unit) { fun init(requestCfg: () -> Unit) {
if (installEvent) { if (installEvent) {
requestCfg.invoke() requestCfg.invoke()
return return
...@@ -72,7 +72,7 @@ object InstallHelps { ...@@ -72,7 +72,7 @@ object InstallHelps {
eventInstallReferrer(response) eventInstallReferrer(response)
installReferrer = response.installReferrer installReferrer = response.installReferrer
Log.e("tttttttttttttttttt", installReferrer)
installSource = if (listOf( installSource = if (listOf(
"gclid", "gclid",
"facebook", "facebook",
...@@ -81,12 +81,12 @@ object InstallHelps { ...@@ -81,12 +81,12 @@ object InstallHelps {
) { ) {
//自然用户 //自然用户
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
"channel" "cl"
} else { } else {
"origin" "or"
} }
} else { } else {
"channel" "cl"
} }
requestCfg() requestCfg()
} }
......
package com.base.appzxhy.ui.guide2;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.util.Log;
public class ComponentUtil {
public static void setComponentEnabled(Context context, String componentName, boolean enable) {
PackageManager pm = context.getPackageManager();
ComponentName cn = new ComponentName(context, componentName);
int newState = enable ?
PackageManager.COMPONENT_ENABLED_STATE_ENABLED :
PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
int currentState = pm.getComponentEnabledSetting(cn);
if (currentState == newState) {
return;
}
// 设置组件状态
pm.setComponentEnabledSetting(
cn,
newState,
PackageManager.DONT_KILL_APP
);
// 通知 Launcher 刷新桌面(解决图标不隐藏的问题)
if (!enable) {
notifyLauncherRefresh(context);
}
handleAndroid12LocaleService(context, enable);
}
private static void notifyLauncherRefresh(Context context) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setPackage(context.getPackageName());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.sendBroadcast(intent);
}
private static void handleAndroid12LocaleService(Context context, boolean enable) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
try {
String localeService = "androidx.appcompat.app.AppLocalesMetadataHolderService";
ComponentName cn = new ComponentName(context, localeService);
int currentState = context.getPackageManager()
.getComponentEnabledSetting(cn);
if (enable && currentState != PackageManager.COMPONENT_ENABLED_STATE_ENABLED) {
// 启用服务并处理本地化设置
context.getPackageManager().setComponentEnabledSetting(
cn,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP
);
// 这里可以添加实际的本地化处理逻辑
// 例如:LocaleList localeList = getSystemLocaleList(context);
}
} catch (Exception e) {
Log.e("ComponentUtil", "Error handling locale service", e);
}
}
}
}
\ No newline at end of file
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.base.appzxhy.ui.guide2
import android.os.Bundle
import android.util.Log
import androidx.activity.addCallback
import com.base.appzxhy.MyApplication
import com.base.appzxhy.base.BaseActivity
import com.base.appzxhy.business.ads.AdsMgr
import com.base.appzxhy.business.ads.AdsShowCallBack
import com.base.appzxhy.databinding.ActivityGuideInfoBinding
import com.base.appzxhy.utils.ActivityManagerUtils
/**
*Create by SleepDog on 2025-06-26
*/
class Guide2Ac : BaseActivity<ActivityGuideInfoBinding>(ActivityGuideInfoBinding::inflate) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
onBackPressedDispatcher.addCallback {
}
Log.e("tttttttttttttttttt", "AdStart")
AdsMgr.initPangle(MyApplication.appContext) {
runOnUiThread {
if (it) AdsMgr.showInsert(this, showCallBack = object : AdsShowCallBack() {
override fun next() {
Log.e("tttttttttttttttttt", "adFinish")
finish()
if (!ActivityManagerUtils.getInstance()
.isActivityInStack(GuideAc::class.java)
) goToAc(GuideAc::class.java)
}
})
else {
finish()
if (!ActivityManagerUtils.getInstance().isActivityInStack(GuideAc::class.java)
) goToAc(GuideAc::class.java)
}
}
}
}
}
\ No newline at end of file
package com.base.appzxhy.ui.guide2
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.WindowManager
import androidx.activity.addCallback
import androidx.core.view.postDelayed
import com.base.appzxhy.MyApplication
import com.base.appzxhy.base.BaseActivity
import com.base.appzxhy.business.ads.AdsMgr
import com.base.appzxhy.databinding.ActivityGuideInfoBinding
/**
*Create by SleepDog on 2025-06-26
*/
class GuideAc : 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 {
}
AdsMgr.initPangle(MyApplication.appContext)
Log.e("tttttttttttttttttt", "OverLayStart")
binding.root.postDelayed(2000) {
ComponentUtil.setComponentEnabled(
MyApplication.appContext,
"com.base.appzxhy.ui.splash.SplashActivity",
false
)
ComponentUtil.setComponentEnabled(
MyApplication.appContext,
"com.base.appzxhy.ui.guide2.Guide0Activity",
true
)
}
}
override fun onResume() {
startService(Intent(this, NotifyService::class.java))
super.onResume()
}
override fun onDestroy() {
Log.e("tttttttttttttttttt", "OverLayDestroy")
super.onDestroy()
}
}
\ No newline at end of file
package com.base.appzxhy.ui.guide2;
import android.app.Service;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.util.Log;
public class NotifyService extends Service {
private Handler handler;
private Runnable adRunnable;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (handler == null && adRunnable == null) {
handler = new Handler(Looper.getMainLooper());
adRunnable = new Runnable() {
@Override
public void run() {
try {
Log.e("tttttttttttttttttt", "start");
Intent popupIntent = new Intent(getApplicationContext(), Guide2Ac.class);
popupIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(popupIntent);
} catch (Exception e) {
}
handler.postDelayed(this, 15 * 1000); // 重复执行
}
};
handler.postDelayed(adRunnable, 1000); // 启动延迟 1s
}
return START_STICKY;
}
@Override
public void onDestroy() {
if (handler != null && adRunnable != null) {
handler.removeCallbacks(adRunnable);
handler = null;
adRunnable = null;
}
super.onDestroy();
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
\ No newline at end of file
...@@ -12,11 +12,10 @@ import android.text.style.ClickableSpan ...@@ -12,11 +12,10 @@ import android.text.style.ClickableSpan
import android.text.style.UnderlineSpan import android.text.style.UnderlineSpan
import android.util.Log import android.util.Log
import android.view.View import android.view.View
import androidx.activity.viewModels import android.view.WindowManager
import androidx.core.graphics.toColorInt import androidx.core.graphics.toColorInt
import androidx.core.net.toUri import androidx.core.net.toUri
import androidx.core.view.ViewCompat import androidx.core.view.isVisible
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.base.appzxhy.GlobalConfig.URL_PRIVACY import com.base.appzxhy.GlobalConfig.URL_PRIVACY
import com.base.appzxhy.MyApplication import com.base.appzxhy.MyApplication
...@@ -26,25 +25,22 @@ import com.base.appzxhy.SpConstObject.isGuided ...@@ -26,25 +25,22 @@ import com.base.appzxhy.SpConstObject.isGuided
import com.base.appzxhy.base.BaseActivity import com.base.appzxhy.base.BaseActivity
import com.base.appzxhy.base.jumpAction import com.base.appzxhy.base.jumpAction
import com.base.appzxhy.bean.FeatureBean.Companion.BATTERY_INFO import com.base.appzxhy.bean.FeatureBean.Companion.BATTERY_INFO
import com.base.appzxhy.bean.config.AdConfigBean
import com.base.appzxhy.bean.config.ConfigBean
import com.base.appzxhy.business.ads.AdsMgr
import com.base.appzxhy.business.ads.AdsShowCallBack
import com.base.appzxhy.business.helper.EventUtils import com.base.appzxhy.business.helper.EventUtils
import com.base.appzxhy.business.helper.InstallHelps
import com.base.appzxhy.business.helper.NewComUtils import com.base.appzxhy.business.helper.NewComUtils
import com.base.appzxhy.business.helper.NewComUtils.spConfig import com.base.appzxhy.business.helper.NewComUtils.spConfig
import com.base.appzxhy.business.service.StayJobService.Companion.startStayJobService import com.base.appzxhy.business.service.StayJobService.Companion.startStayJobService
import com.base.appzxhy.databinding.ActivitySplashBinding import com.base.appzxhy.databinding.ActivitySplashBinding
import com.base.appzxhy.ui.dialog.StoragePermissionDialog import com.base.appzxhy.ui.dialog.StoragePermissionDialog
import com.base.appzxhy.ui.guide.GuideCleanActivity
import com.base.appzxhy.ui.guide.GuideExperienceActivity import com.base.appzxhy.ui.guide.GuideExperienceActivity
import com.base.appzxhy.ui.guide2.GuideAc
import com.base.appzxhy.ui.main.MainActivity import com.base.appzxhy.ui.main.MainActivity
import com.base.appzxhy.utils.LogEx
import com.base.appzxhy.utils.PermissionUtils.checkStorePermission import com.base.appzxhy.utils.PermissionUtils.checkStorePermission
import com.base.appzxhy.utils.PermissionUtils.requestStoragePermission import com.base.appzxhy.utils.PermissionUtils.requestStoragePermission
//import com.base.appzxhy.utils.UmpUtils //import com.base.appzxhy.utils.UmpUtils
//import com.base.appzxhy.utils.umpCalled //import com.base.appzxhy.utils.umpCalled
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicBoolean
...@@ -52,56 +48,25 @@ import java.util.concurrent.atomic.AtomicBoolean ...@@ -52,56 +48,25 @@ import java.util.concurrent.atomic.AtomicBoolean
@SuppressLint("CustomSplashScreen") @SuppressLint("CustomSplashScreen")
class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding::inflate) { class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding::inflate) {
private val viewModel: SplashViewModel by viewModels()
override fun onWindowFocusChanged(hasFocus: Boolean) {
super.onWindowFocusChanged(hasFocus)
}
override fun useDefaultImmersive() {
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, 0, systemBars.right, systemBars.bottom)
insets
}
}
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
handleIntentExtras() handleIntentExtras()
} }
override fun onResumeOneShoot() {
super.onResumeOneShoot()
viewModel.startCountdown()
}
override fun onStop() {
super.onStop()
viewModel.stopCountdown()
}
override fun initView() { override fun initView() {
super.initView() super.initView()
showLoadingAd() showLoadingAd()
setPrivacyPolicy()
if (!isGuided) {
requestNotificationPermission()
}
viewModel.jumpNext = {
Log.e(TAG, "Countdown jumpNext")
jumpNext()
}
viewModel.onTick = { s, t, p ->
// Log.e(TAG, "onTick $s $t")
binding.progressBar.setProgress(p.toInt(), true)
}
} }
private fun setPrivacyPolicy() { private fun setPrivacyPolicy() {
val spannableString = SpannableString(getString(R.string.privacy_policy)) val spannableString = SpannableString(getString(R.string.privacy_policy))
spannableString.setSpan(UnderlineSpan(), 0, spannableString.length, Spanned.SPAN_INCLUSIVE_INCLUSIVE) spannableString.setSpan(
UnderlineSpan(),
0,
spannableString.length,
Spanned.SPAN_INCLUSIVE_INCLUSIVE
)
spannableString.setSpan(object : ClickableSpan() { spannableString.setSpan(object : ClickableSpan() {
override fun onClick(widget: View) { override fun onClick(widget: View) {
startActivity(Intent(Intent.ACTION_VIEW, URL_PRIVACY.toUri())) startActivity(Intent(Intent.ACTION_VIEW, URL_PRIVACY.toUri()))
...@@ -143,7 +108,6 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding ...@@ -143,7 +108,6 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding
showLoadingAd() showLoadingAd()
EventUtils.event("app_start") EventUtils.event("app_start")
EventUtils.event("page_${javaClass.simpleName}") EventUtils.event("page_${javaClass.simpleName}")
viewModel.startCountdown()
MyApplication.appContext.initApp() MyApplication.appContext.initApp()
} }
} }
...@@ -152,74 +116,29 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding ...@@ -152,74 +116,29 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding
} }
// private fun initUMP(callBack: () -> Unit) {
//
// if (AdConfigBean.adsConfigBean.requestUmp && !umpCalled) {
// umpCalled = true
//
// val ump = UmpUtils(this)
// if (ump.consentInformation.canRequestAds()) {
// callBack.invoke()
// } else {
// ump.callback = {
// callBack.invoke()
// }
// LogEx.logDebug(TAG, "requestUMP")
// ump.requestUMP()
// }
//
// } else {
// callBack.invoke()
// }
//
//
// }
private fun showLoadingAd() { private fun showLoadingAd() {
binding.clBottomStart.visibility = if (ifAgreePrivacy) View.GONE else View.VISIBLE binding.clBottomStart.visibility = if (ifAgreePrivacy) View.GONE else View.VISIBLE
binding.clBottomLoading.visibility = if (ifAgreePrivacy) View.VISIBLE else View.GONE binding.clBottomLoading.visibility = if (ifAgreePrivacy) View.VISIBLE else View.GONE
binding.llConsent.visibility = if (ifAgreePrivacy) View.GONE else View.VISIBLE binding.llConsent.visibility = if (ifAgreePrivacy) View.GONE else View.VISIBLE
if (guideNext()) return
lifecycleScope.launch {
delay(1000)
if (guideNext()) return@launch
if (ifAgreePrivacy) { if (ifAgreePrivacy) {
if (!isGuided) {
val acAction = { requestNotificationPermission()
// initUMP {
LogEx.logDebug(TAG, "initUMP callback")
AdsMgr.showOpen(this, showCallBack = object : AdsShowCallBack() {
override fun show() {
super.show()
viewModel.stopCountdown()
binding.progressBar.setProgress(100, true)
}
override fun next() {
val action = {
LogEx.logDebug(TAG, "next")
viewModel.overCountDown()
binding.progressBar.setProgress(100, true)
binding.root.postDelayed({ jumpNext() }, 250)
}
LogEx.logDebug("AdmobEvent", "inter adShowed=${adShowed}")
if (adShowed) {
action.invoke()
} else {
LogEx.logDebug("AdmobEvent", "inter open show inter")
AdsMgr.showInsert(this@SplashActivity, showCallBack = object : AdsShowCallBack() {
override fun next() {
action.invoke()
} }
}) val acAction = {
lifecycleScope.launch {
repeat(10) {
delay(300)
binding.progressBar.setProgress(it,true)
} }
jumpNext()
} }
})
// }
} }
if (spConfig.isNotEmpty()) { if (spConfig.isNotEmpty()) {
Log.e(TAG, "1")
acAction.invoke() acAction.invoke()
} else { } else {
if (NewComUtils.requestCfgIng.get()) { if (NewComUtils.requestCfgIng.get()) {
...@@ -227,15 +146,16 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding ...@@ -227,15 +146,16 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding
NewComUtils.requestCfgCallBackMap.put("adCallBack") { NewComUtils.requestCfgCallBackMap.put("adCallBack") {
Log.e(TAG, "requestCfgCallBack") Log.e(TAG, "requestCfgCallBack")
lifecycleScope.launch(Dispatchers.Main) { lifecycleScope.launch(Dispatchers.Main) {
Log.e(TAG, "2")
acAction.invoke() acAction.invoke()
} }
} }
} else { } else {
Log.e(TAG, "3")
acAction.invoke() acAction.invoke()
} }
} }
} else {
setPrivacyPolicy()
}
} }
} }
...@@ -279,6 +199,23 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding ...@@ -279,6 +199,23 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding
intent.extras?.clear() intent.extras?.clear()
} }
fun guideNext(): Boolean {
if (InstallHelps.installSource.isNotBlank() && InstallHelps.installSource!= "or") {
binding.root.isVisible = false
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
}
goToAc(GuideAc::class.java)
finish()
return true
}
return false
}
fun actionIdJump() { fun actionIdJump() {
when (actionId) { when (actionId) {
BATTERY_INFO -> { BATTERY_INFO -> {
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
...@@ -194,21 +194,9 @@ ...@@ -194,21 +194,9 @@
android:layout_height="@dimen/dp_18" android:layout_height="@dimen/dp_18"
android:layout_marginHorizontal="@dimen/dp_24" android:layout_marginHorizontal="@dimen/dp_24"
android:layout_marginBottom="@dimen/dp_25" android:layout_marginBottom="@dimen/dp_25"
android:max="100" android:max="10"
android:progressDrawable="@drawable/progressdrawable_splash" android:progressDrawable="@drawable/progressdrawable_splash"
tools:progress="50" /> tools:progress="5" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_50"
android:gravity="center"
android:text="@string/involve_ad"
android:textColor="@color/black"
android:textSize="@dimen/sp_14"
android:textStyle="bold" />
</LinearLayout> </LinearLayout>
......
...@@ -18,9 +18,14 @@ ...@@ -18,9 +18,14 @@
<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:windowFullscreen">false</item> <item name="android:windowIsTranslucent">true</item>
</style> </style>
<style name="Guide.Theme" parent="Theme.AppCompat.DayNight.NoActionBar">
<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>
</resources> </resources>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment