1.1(2)

This commit is contained in:
ocean 2026-01-08 17:38:19 +08:00
parent 88ca5e00f6
commit 080c858e85
20 changed files with 328 additions and 23 deletions

View File

@ -7,6 +7,8 @@ plugins {
id("org.jetbrains.kotlin.android") id("org.jetbrains.kotlin.android")
kotlin("kapt") kotlin("kapt")
id ("kotlin-android") id ("kotlin-android")
id("com.google.gms.google-services")
id("com.google.firebase.crashlytics")
} }
val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date()) val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date())
@ -17,8 +19,8 @@ android {
applicationId = "com.app.personalised.board" applicationId = "com.app.personalised.board"
minSdk = 24 minSdk = 24
targetSdk = 36 targetSdk = 36
versionCode = 1 versionCode = 2
versionName = "1.0" versionName = "1.1"
setProperty( setProperty(
"archivesBaseName", "archivesBaseName",
"PersonalisedKeyboard_V" + versionName + "(${versionCode})_$timestamp" "PersonalisedKeyboard_V" + versionName + "(${versionCode})_$timestamp"
@ -79,6 +81,93 @@ dependencies {
implementation("com.google.android.material:material:1.8.0") implementation("com.google.android.material:material:1.8.0")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2")
implementation("com.google.android.gms:play-services-ads-identifier:18.0.1")
implementation("com.google.android.gms:play-services-location:21.0.1")
implementation("com.google.android.gms:play-services-appset:16.0.1")
// Import the Firebase BoM
implementation(platform("com.google.firebase:firebase-bom:34.6.0"))
implementation("com.google.firebase:firebase-crashlytics-ndk")
implementation("com.google.firebase:firebase-analytics")
// okhttp
implementation("com.squareup.okhttp3:okhttp:4.12.0")
implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")
implementation(files("libs/UpLoadLibrary_12_03_15_13-release.aar"))
implementation(files("libs/TradPlusLibrary_01_04_12_20-release.aar"))
// TradPlus
implementation("com.tradplusad:tradplus:15.2.0.1")
implementation("androidx.legacy:legacy-support-v4:1.0.0")
implementation("androidx.appcompat:appcompat:1.3.0-alpha02")
// IronSource
implementation("com.ironsource.sdk:mediationsdk:9.0.0")
implementation("com.tradplusad:tradplus-ironsource:10.15.2.0.1")
// Pangle
implementation("com.tradplusad:tradplus-pangle:19.15.2.0.1")
implementation("com.pangle.global:pag-sdk:7.8.0.7")
// UnityAds
implementation("com.tradplusad:tradplus-unity:5.15.2.0.1")
implementation("com.unity3d.ads:unity-ads:4.16.3")
// Chartboost
// implementation("com.tradplusad:tradplus-chartboostx:15.15.2.0.1")
// implementation("com.chartboost:chartboost-sdk:9.10.0")
// implementation("com.google.android.gms:play-services-ads-identifier:17.0.0")
// implementation("com.google.android.gms:play-services-base:17.4.0")
//上面新版本下载失败用旧版本
implementation("com.tradplusad:tradplus-chartboostx:15.14.5.0.1")
implementation("com.chartboost:chartboost-sdk:9.8.3")
implementation("com.google.android.gms:play-services-ads-identifier:17.0.0")
implementation("com.google.android.gms:play-services-base:17.4.0")
// InMobi
implementation("com.tradplusad:tradplus-inmobix:23.15.2.0.1")
implementation("com.inmobi.monetization:inmobi-ads-kotlin:11.0.0")
implementation("com.squareup.okhttp3:okhttp:3.14.9")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4")
implementation("androidx.core:core-ktx:1.5.0")
implementation("org.jetbrains.kotlin:kotlin-stdlib:1.9.0")
implementation("com.google.android.gms:play-services-ads-identifier:18.0.1")
implementation("com.google.android.gms:play-services-location:21.0.1") // optional
implementation("androidx.browser:browser:1.8.0")
implementation("com.squareup.picasso:picasso:2.8")
implementation("androidx.viewpager:viewpager:1.0.0")
implementation("androidx.recyclerview:recyclerview:1.2.1")
// Fyber
implementation("com.fyber:marketplace-sdk:8.4.0")
implementation("com.tradplusad:tradplus-fyber:24.15.2.0.1")
implementation("com.google.android.gms:play-services-ads-identifier:17.0.0")
implementation("com.google.android.gms:play-services-base:17.4.0")
// Mintegral
implementation("com.tradplusad:tradplus-mintegralx_overseas:18.15.2.0.1")
implementation("androidx.recyclerview:recyclerview:1.1.0")
implementation("com.mbridge.msdk.oversea:mbridge_android_sdk:16.10.11")
// Liftoff (Vungle)
implementation("com.tradplusad:tradplus-vunglex:7.15.2.0.1")
implementation("com.vungle:vungle-ads:7.6.0")
// Bigo
implementation("com.bigossp:bigo-ads:5.5.2")
implementation("com.tradplusad:tradplus-bigo:57.15.2.0.1")
// Cross Promotion
implementation("com.tradplusad:tradplus-crosspromotion:27.15.2.0.1")
// TP Exchange注意与主包版本同步
implementation("com.google.code.gson:gson:2.8.6")
implementation("com.tradplusad:tp_exchange:40.15.2.0.1")
// Google UMP
implementation ("com.google.android.ump:user-messaging-platform:3.2.0")
} }

29
app/google-services.json Normal file
View File

@ -0,0 +1,29 @@
{
"project_info": {
"project_number": "707506673294",
"project_id": "personalisedkeyboard",
"storage_bucket": "personalisedkeyboard.firebasestorage.app"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:707506673294:android:8de1c21abf0344b5595bdf",
"android_client_info": {
"package_name": "com.app.personalised.board"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyBXboMtte05rWeoVVvUHmJRoZYTIE4ooQ0"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"
}

Binary file not shown.

Binary file not shown.

View File

@ -43,3 +43,5 @@
-keep class com.omicronapplications.** { *; } -keep class com.omicronapplications.** { *; }
-keep class net.sf.sevenzipjbinding.** { *; } -keep class net.sf.sevenzipjbinding.** { *; }
-keep public class com.tradplus.** { *; }
-keep class com.tradplus.ads.** { *; }

View File

@ -3,13 +3,18 @@
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.AD_ID" />
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />
<application <application
android:name=".BoartApp" android:name=".BoartApp"
android:allowBackup="true" android:allowBackup="true"
android:icon="@mipmap/logo" android:icon="@mipmap/logo"
android:label="@string/app_name" android:label="@string/app_name"
android:roundIcon="@mipmap/logo" android:roundIcon="@mipmap/logo"
android:networkSecurityConfig="@xml/net"
tools:replace="networkSecurityConfig"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/MyKeyBoard" android:theme="@style/MyKeyBoard"
tools:targetApi="31"> tools:targetApi="31">

View File

@ -4,6 +4,7 @@ import android.app.Application
import android.graphics.Typeface import android.graphics.Typeface
import com.app.input.personalised.board.databean.KeyboardTheme import com.app.input.personalised.board.databean.KeyboardTheme
import com.app.input.personalised.board.databean.ThemeCategory import com.app.input.personalised.board.databean.ThemeCategory
import com.up.uploadlibrary.UpLoadManager
//import com.pretty.keyboard.theme.keyboard.helper.ObjectBox //import com.pretty.keyboard.theme.keyboard.helper.ObjectBox
import org.json.JSONArray import org.json.JSONArray
import java.io.BufferedReader import java.io.BufferedReader
@ -29,6 +30,8 @@ class BoartApp : Application() {
boartAppInstance = this boartAppInstance = this
defaultFont = Typeface.createFromAsset(assets, "my_font.ttf") defaultFont = Typeface.createFromAsset(assets, "my_font.ttf")
dealFile() dealFile()
UpLoadManager.init(this,"ocean",{s,ss->})
} }
private fun dealFile() { private fun dealFile() {
val openFile = boartAppInstance.assets.open("new_res.json") val openFile = boartAppInstance.assets.open("new_res.json")

View File

@ -0,0 +1,36 @@
package com.app.input.personalised.board.boartactivity
import android.os.Bundle
import androidx.activity.OnBackPressedCallback
import androidx.appcompat.app.AppCompatActivity
open class BaseActivity: AppCompatActivity() {
protected var backPressedCallback: OnBackPressedCallback? = null
/** 子类是否需要拦截返回 */
protected open fun shouldInterceptBackPress(): Boolean = false
/** 子类定义拦截后的操作(例如弹窗) */
protected open fun onInterceptBackPressed() {}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setupBackPressedCallback()//初始化back事件
}
private fun setupBackPressedCallback() {
backPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
if (shouldInterceptBackPress()) {
// 由子类处理拦截动作
onInterceptBackPressed()
} else {
// 不拦截:关闭自己
isEnabled = false
onBackPressedDispatcher.onBackPressed()
}
}
}
onBackPressedDispatcher.addCallback(this, backPressedCallback!!)
}
}

View File

@ -9,7 +9,10 @@ import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat; import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat; import androidx.core.view.WindowInsetsCompat;
import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.GridLayoutManager;
import kotlin.Unit;
import kotlin.jvm.functions.Function0;
import com.ad.tradpluslibrary.TPAdManager;
import com.app.input.personalised.board.R; import com.app.input.personalised.board.R;
import com.app.input.personalised.board.databean.KeyboardTheme; import com.app.input.personalised.board.databean.KeyboardTheme;
import com.app.input.personalised.board.itemback.FavoriteRemovedListener; import com.app.input.personalised.board.itemback.FavoriteRemovedListener;
@ -21,7 +24,7 @@ import com.app.input.personalised.board.helpers.GridItemDecoration;
import java.util.List; import java.util.List;
public class FavoriteThemeActivity extends AppCompatActivity implements FavoriteRemovedListener { public class FavoriteThemeActivity extends BaseActivity implements FavoriteRemovedListener {
private ActivityFavoriteThemeBinding vb; private ActivityFavoriteThemeBinding vb;
@Override @Override
@ -94,9 +97,29 @@ public class FavoriteThemeActivity extends AppCompatActivity implements Favorite
vb.back.setOnClickListener(new View.OnClickListener() { vb.back.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
finish(); onInterceptBackPressed();
} }
}); });
} }
@Override
protected boolean shouldInterceptBackPress() {
return true;
}
@Override
protected void onInterceptBackPressed() {
TPAdManager.INSTANCE.showTPAD(this, new Function0<Unit>() {
@Override
public Unit invoke() {
return null;
}
});
if (getBackPressedCallback() != null) {
getBackPressedCallback().setEnabled(false);
}
getOnBackPressedDispatcher().onBackPressed();
}
} }

View File

@ -16,6 +16,7 @@ import androidx.fragment.app.Fragment;
import androidx.viewpager2.adapter.FragmentStateAdapter; import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2; import androidx.viewpager2.widget.ViewPager2;
import com.ad.tradpluslibrary.TPAdManager;
import com.app.input.personalised.board.R; import com.app.input.personalised.board.R;
import com.app.input.personalised.board.databinding.ActivityMainTabBinding; import com.app.input.personalised.board.databinding.ActivityMainTabBinding;
import com.app.input.personalised.board.helpers.FontTextView; import com.app.input.personalised.board.helpers.FontTextView;
@ -57,6 +58,7 @@ public class MainTabActivity extends AppCompatActivity {
@Override @Override
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
TPAdManager.INSTANCE.loadAllAd(this);
// 确保状态栏始终为透明 // 确保状态栏始终为透明
com.app.input.personalised.board.helpers.StatusBarHelper.INSTANCE.setTransparentStatusBar(this); com.app.input.personalised.board.helpers.StatusBarHelper.INSTANCE.setTransparentStatusBar(this);
} }

View File

@ -5,8 +5,11 @@ import android.content.Intent
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.os.CountDownTimer import android.os.CountDownTimer
import android.os.Handler
import android.os.Looper
import android.widget.ProgressBar import android.widget.ProgressBar
import androidx.core.view.WindowCompat import androidx.core.view.WindowCompat
import com.ad.tradpluslibrary.TPAdManager
import com.app.input.personalised.board.R import com.app.input.personalised.board.R
import com.app.input.personalised.board.helpers.FontTextView import com.app.input.personalised.board.helpers.FontTextView
import com.app.input.personalised.board.helpers.StatusBarHelper import com.app.input.personalised.board.helpers.StatusBarHelper
@ -19,7 +22,7 @@ import kotlin.math.roundToInt
class SplashItemActivity : Activity() { class SplashItemActivity : Activity() {
private lateinit var progressBar: ProgressBar private lateinit var progressBar: ProgressBar
private var countTime = 1500L private var countTime = 15000L
private lateinit var timer: CountDownTimer private lateinit var timer: CountDownTimer
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
@ -96,14 +99,21 @@ class SplashItemActivity : Activity() {
.setStartDelay(400) .setStartDelay(400)
.start() .start()
timer = object : CountDownTimer(countTime, 50) { TPAdManager.init(
override fun onTick(millisUntilFinished: Long) { this,
"ocean",
"D04E3BFA57E4C6B80DEE2330FDA83911",
"55AF9308C928391273F59B56F85AE312",
"A7BB8224B2D507F6D9E60AB9A004B112",
"4D633F943D14075A7B4DE0A008254A12"
) {}
timer =
TPAdManager.showWelcomeAd(this, countTime, { millisUntilFinished ->
val percentage: Float = 100 - millisUntilFinished.toFloat() / countTime * 100 val percentage: Float = 100 - millisUntilFinished.toFloat() / countTime * 100
val round = percentage.roundToInt() val round = percentage.roundToInt()
progressBar.progress = round progressBar.progress = round
}
override fun onFinish() { }) {
progressBar.progress = 100 progressBar.progress = 100
// 添加淡出动画 // 添加淡出动画
logo.animate() logo.animate()
@ -122,7 +132,6 @@ class SplashItemActivity : Activity() {
} }
.start() .start()
} }
}
timer.start() timer.start()
} }

View File

@ -20,6 +20,7 @@ import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.ad.tradpluslibrary.TPAdManager
import com.app.input.personalised.board.BoartApp import com.app.input.personalised.board.BoartApp
import com.app.input.personalised.board.R import com.app.input.personalised.board.R
import com.app.input.personalised.board.databean.KeyboardTheme import com.app.input.personalised.board.databean.KeyboardTheme
@ -93,6 +94,7 @@ class ThemeDetailActivity : AppCompatActivity() {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
enableEdgeToEdge() enableEdgeToEdge()
setContentView(R.layout.activity_theme_detail) setContentView(R.layout.activity_theme_detail)
TPAdManager.loadAllAd(this)
com.app.input.personalised.board.helpers.StatusBarHelper.setTransparentStatusBar(this) com.app.input.personalised.board.helpers.StatusBarHelper.setTransparentStatusBar(this)
ViewCompat.setOnApplyWindowInsetsListener( ViewCompat.setOnApplyWindowInsetsListener(
findViewById<View?>(R.id.main), findViewById<View?>(R.id.main),
@ -112,6 +114,8 @@ class ThemeDetailActivity : AppCompatActivity() {
displayData() displayData()
setApply() setApply()
onClick() onClick()
TPAdManager.showTPAD(this) {}
} }
override fun onResume() { override fun onResume() {

View File

@ -9,7 +9,10 @@ import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat; import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat; import androidx.core.view.WindowInsetsCompat;
import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.GridLayoutManager;
import kotlin.Unit;
import kotlin.jvm.functions.Function0;
import com.ad.tradpluslibrary.TPAdManager;
import com.app.input.personalised.board.BoartApp; import com.app.input.personalised.board.BoartApp;
import com.app.input.personalised.board.R; import com.app.input.personalised.board.R;
import com.app.input.personalised.board.databean.KeyboardTheme; import com.app.input.personalised.board.databean.KeyboardTheme;
@ -20,17 +23,19 @@ import com.app.input.personalised.board.helpers.GridItemDecoration;
import java.util.List; import java.util.List;
public class ThemeListActivity extends AppCompatActivity { public class ThemeListActivity extends BaseActivity {
private ActivityThemeListBinding vb; private ActivityThemeListBinding vb;
public static final String KEY_NAME = "class_name"; public static final String KEY_NAME = "class_name";
private String name; private String name;
private List<KeyboardTheme> data; private List<KeyboardTheme> data;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
vb = ActivityThemeListBinding.inflate(getLayoutInflater()); vb = ActivityThemeListBinding.inflate(getLayoutInflater());
EdgeToEdge.enable(this); EdgeToEdge.enable(this);
setContentView(vb.getRoot()); setContentView(vb.getRoot());
TPAdManager.INSTANCE.loadAllAd(this);
com.app.input.personalised.board.helpers.StatusBarHelper.INSTANCE.setTransparentStatusBar(this); com.app.input.personalised.board.helpers.StatusBarHelper.INSTANCE.setTransparentStatusBar(this);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
@ -73,13 +78,33 @@ public class ThemeListActivity extends AppCompatActivity {
vb.recycler.addItemDecoration(gridItemDecoration); vb.recycler.addItemDecoration(gridItemDecoration);
} }
private void initClick() { private void initClick() {
vb.back.setOnClickListener(new View.OnClickListener() { vb.back.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
finish(); onInterceptBackPressed();
} }
}); });
} }
@Override
protected boolean shouldInterceptBackPress() {
return true;
}
@Override
protected void onInterceptBackPressed() {
TPAdManager.INSTANCE.showTPAD(this, new Function0<Unit>() {
@Override
public Unit invoke() {
return null;
}
});
if (getBackPressedCallback() != null) {
getBackPressedCallback().setEnabled(false);
}
getOnBackPressedDispatcher().onBackPressed();
}
} }

View File

@ -18,6 +18,7 @@ import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat; import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat; import androidx.core.view.WindowInsetsCompat;
import com.ad.tradpluslibrary.TPAdManager;
import com.app.input.personalised.board.R; import com.app.input.personalised.board.R;
import com.app.input.personalised.board.databinding.ActivityThemePreviewBinding; import com.app.input.personalised.board.databinding.ActivityThemePreviewBinding;
import com.app.input.personalised.board.helpers.KeyboardConstants; import com.app.input.personalised.board.helpers.KeyboardConstants;
@ -30,9 +31,11 @@ import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.target.Target;
import jp.wasabeef.glide.transformations.BlurTransformation; import jp.wasabeef.glide.transformations.BlurTransformation;
import kotlin.Unit;
import kotlin.jvm.functions.Function0;
public class ThemePreviewActivity extends AppCompatActivity { public class ThemePreviewActivity extends BaseActivity {
private ActivityThemePreviewBinding vb; private ActivityThemePreviewBinding vb;
public static String key_name = "key_name"; public static String key_name = "key_name";
private int mPreviousKeyboardHeight = -1; private int mPreviousKeyboardHeight = -1;
@ -85,7 +88,7 @@ public class ThemePreviewActivity extends AppCompatActivity {
vb.idBack.setOnClickListener(new View.OnClickListener() { vb.idBack.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
finish(); onInterceptBackPressed();
} }
}); });
if (curPath == null) { if (curPath == null) {
@ -147,4 +150,25 @@ public class ThemePreviewActivity extends AppCompatActivity {
} }
}); });
} }
@Override
protected boolean shouldInterceptBackPress() {
return true;
}
@Override
protected void onInterceptBackPressed() {
TPAdManager.INSTANCE.showTPAD(this, new Function0<Unit>() {
@Override
public Unit invoke() {
return null;
}
});
if (getBackPressedCallback() != null) {
getBackPressedCallback().setEnabled(false);
}
getOnBackPressedDispatcher().onBackPressed();
}
} }

View File

@ -15,7 +15,10 @@ import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat; import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat; import androidx.core.view.WindowInsetsCompat;
import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.GridLayoutManager;
import kotlin.Unit;
import kotlin.jvm.functions.Function0;
import com.ad.tradpluslibrary.TPAdManager;
import com.app.input.personalised.board.BoartApp; import com.app.input.personalised.board.BoartApp;
import com.app.input.personalised.board.R; import com.app.input.personalised.board.R;
import com.app.input.personalised.board.databean.KeyboardTheme; import com.app.input.personalised.board.databean.KeyboardTheme;
@ -27,7 +30,7 @@ import com.app.input.personalised.board.helpers.GridItemDecoration;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class ThemeSearchActivity extends AppCompatActivity { public class ThemeSearchActivity extends BaseActivity {
private ActivityThemeSearchBinding vb; private ActivityThemeSearchBinding vb;
private RecommendedGridAdapter searchAdapter; private RecommendedGridAdapter searchAdapter;
private List<KeyboardTheme> allItems = new ArrayList<>(); private List<KeyboardTheme> allItems = new ArrayList<>();
@ -153,7 +156,7 @@ public class ThemeSearchActivity extends AppCompatActivity {
private void initClick() { private void initClick() {
// 返回按钮 // 返回按钮
vb.ivBack.setOnClickListener(v -> finish()); vb.ivBack.setOnClickListener(v -> onInterceptBackPressed());
// 清除按钮 // 清除按钮
vb.ivClear.setOnClickListener(v -> { vb.ivClear.setOnClickListener(v -> {
@ -208,5 +211,26 @@ public class ThemeSearchActivity extends AppCompatActivity {
vb.etSearch.getText().toString().trim().isEmpty() ? View.GONE : View.VISIBLE vb.etSearch.getText().toString().trim().isEmpty() ? View.GONE : View.VISIBLE
); );
} }
@Override
protected boolean shouldInterceptBackPress() {
return true;
}
@Override
protected void onInterceptBackPressed() {
TPAdManager.INSTANCE.showTPAD(this, new Function0<Unit>() {
@Override
public Unit invoke() {
return null;
}
});
if (getBackPressedCallback() != null) {
getBackPressedCallback().setEnabled(false);
}
getOnBackPressedDispatcher().onBackPressed();
}
} }

View File

@ -144,8 +144,10 @@ public class CustomInputMethodService extends InputMethodService implements Keyb
@Override @Override
public void onDestroy() { public void onDestroy() {
super.onDestroy(); super.onDestroy();
if(videoView!=null){
videoView.stopPlayback(); videoView.stopPlayback();
} }
}
@Override @Override
public void onPress(int primaryCode) { public void onPress(int primaryCode) {

View File

@ -1,6 +1,6 @@
<resources xmlns:tools="http://schemas.android.com/tools"> <resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. --> <!-- Base application theme. -->
<style name="MyKeyBoard" beanWrapper="Theme.MaterialComponents.DayNight.NoActionBar"> <style name="MyKeyBoard" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Primary brand color. --> <!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_200</item> <item name="colorPrimary">@color/purple_200</item>
<item name="colorPrimaryVariant">@color/purple_700</item> <item name="colorPrimaryVariant">@color/purple_700</item>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<network-security-config xmlns:tools="http://schemas.android.com/tools">
<domain-config cleartextTrafficPermitted="true">
<domain tools:ignore="NetworkSecurityConfig">mobile-server.lux-ad.com</domain>
</domain-config>
</network-security-config>

View File

@ -3,4 +3,6 @@ plugins {
id("com.android.application") version "8.9.2" apply false id("com.android.application") version "8.9.2" apply false
id("org.jetbrains.kotlin.android") version "2.2.21" apply false id("org.jetbrains.kotlin.android") version "2.2.21" apply false
kotlin("kapt") version "2.0.0" kotlin("kapt") version "2.0.0"
id("com.google.gms.google-services") version "4.4.4" apply false
id("com.google.firebase.crashlytics") version "3.0.6" apply false
} }

View File

@ -12,7 +12,27 @@ dependencyResolutionManagement {
google() google()
mavenCentral() mavenCentral()
maven("https://jitpack.io") maven("https://jitpack.io")
flatDir {
dirs("libs")
}
//------------------------- TradPlus
// Ironsource
maven { url = uri("https://android-sdk.is.com/") }
// Pangle
maven { url = uri("https://artifact.bytedance.com/repository/pangle") }
// Chartboost
maven { url = uri("https://cboost.jfrog.io/artifactory/chartboost-ads/") }
maven {
name = "Chartboost Mediations maven repo"
url = uri("https://cboost.jfrog.io/artifactory/chartboost-mediation")
}
// Mintegral
//Launch GP market application Android X Version
//If you fail to pull the code using gradle, add the maven warehouse configuration to the project root build.gradle file
maven {
url = uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea")
}
} }
} }