更换Mintegral SDK

This commit is contained in:
litingting 2024-07-02 17:32:12 +08:00
parent 888deb17e8
commit 4b168b36df
18 changed files with 428 additions and 249 deletions

1
.gitignore vendored
View File

@ -45,3 +45,4 @@ gradlew.bat
.safedk/dex/SafeDKAndroid-6.3.1.dex .safedk/dex/SafeDKAndroid-6.3.1.dex
app/release/AppLock Defender1.1(2).aab app/release/AppLock Defender1.1(2).aab
app/release/app-release.apk app/release/app-release.apk
app/release/

View File

@ -1,16 +1,16 @@
import java.util.Date
import java.text.SimpleDateFormat
plugins { plugins {
alias(libs.plugins.androidApplication) alias(libs.plugins.androidApplication)
alias(libs.plugins.jetbrainsKotlinAndroid) alias(libs.plugins.jetbrainsKotlinAndroid)
id("kotlin-kapt") id("kotlin-kapt")
id("com.google.gms.google-services") id("com.google.gms.google-services")
id("com.google.firebase.crashlytics") id("com.google.firebase.crashlytics")
id("applovin-quality-service")
}
applovin {
apiKey "gaubl3w6OhMaWqmJb15zVNMO8W91OOSTe2fnoftZMmDkQFTnwMdQVdOdPOMwLRbglPnJsKHfqoPl079qleMk96"
} }
String timestamp =new SimpleDateFormat("MM_dd_HH_mm").format(new Date())
android { android {
namespace 'com.kitobochi.softapp.timberlock' namespace 'com.kitobochi.softapp.timberlock'
compileSdk 34 compileSdk 34
@ -19,8 +19,10 @@ android {
applicationId "com.applock.privacy.defender" applicationId "com.applock.privacy.defender"
minSdk 22 minSdk 22
targetSdk 34 targetSdk 34
versionCode 2 versionCode 3
versionName "1.1" versionName "1.2"
setProperty("archivesBaseName", "AppLock Defender_V" + versionName + "(${versionCode})_$timestamp")
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
} }
@ -66,9 +68,8 @@ dependencies {
implementation("com.google.firebase:firebase-analytics-ktx") implementation("com.google.firebase:firebase-analytics-ktx")
implementation("com.google.firebase:firebase-crashlytics-ktx") implementation("com.google.firebase:firebase-crashlytics-ktx")
implementation("com.applovin:applovin-sdk:+") //---------------------------------Mintegral SDK
implementation("com.applovin.mediation:vungle-adapter:+") implementation ("com.mbridge.msdk.oversea:newinterstitial:16.7.71")
implementation("com.applovin.mediation:bytedance-adapter:+") implementation ("com.mbridge.msdk.oversea:mbbid:16.7.61")
implementation("com.applovin.mediation:mintegral-adapter:+")
} }

View File

@ -1,13 +1,13 @@
{ {
"project_info": { "project_info": {
"project_number": "36819996956", "project_number": "373578020353",
"project_id": "applock-defender---security", "project_id": "applock-defender---secur-2908f",
"storage_bucket": "applock-defender---security.appspot.com" "storage_bucket": "applock-defender---secur-2908f.appspot.com"
}, },
"client": [ "client": [
{ {
"client_info": { "client_info": {
"mobilesdk_app_id": "1:36819996956:android:63137f1a9ab4d34a37ead9", "mobilesdk_app_id": "1:373578020353:android:889ba755e5ab3a9953b200",
"android_client_info": { "android_client_info": {
"package_name": "com.applock.privacy.defender" "package_name": "com.applock.privacy.defender"
} }
@ -15,7 +15,7 @@
"oauth_client": [], "oauth_client": [],
"api_key": [ "api_key": [
{ {
"current_key": "AIzaSyBGf4ZJn19sNlDd8U1Qt9L9vOUfyNTlF8I" "current_key": "AIzaSyCmKGozLNfOW9eNuOg_tQF6GAjT-V7JLQ0"
} }
], ],
"services": { "services": {

View File

@ -4,13 +4,18 @@ import android.app.Application
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.SharedPreferences import android.content.SharedPreferences
import android.util.Log
import androidx.localbroadcastmanager.content.LocalBroadcastManager import androidx.localbroadcastmanager.content.LocalBroadcastManager
import com.applovin.sdk.AppLovinMediationProvider import com.kitobochi.softapp.timberlock.ad.MBrManager
import com.applovin.sdk.AppLovinSdk
import com.applovin.sdk.AppLovinSdkInitializationConfiguration
import com.kitobochi.softapp.timberlock.db.AppDatabase import com.kitobochi.softapp.timberlock.db.AppDatabase
import com.kitobochi.softapp.timberlock.db.AppEntity import com.kitobochi.softapp.timberlock.db.AppEntity
import com.kitobochi.softapp.timberlock.tools.AppListManager import com.kitobochi.softapp.timberlock.tools.AppListManager
import com.mbridge.msdk.MBridgeSDK
import com.mbridge.msdk.mbbid.out.BidListennning
import com.mbridge.msdk.mbbid.out.BidManager
import com.mbridge.msdk.mbbid.out.BidResponsed
import com.mbridge.msdk.out.MBridgeSDKFactory
import com.mbridge.msdk.out.SDKInitStatusListener
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -27,8 +32,9 @@ class App : Application() {
lateinit var sp: SharedPreferences lateinit var sp: SharedPreferences
lateinit var SpEditor: SharedPreferences.Editor lateinit var SpEditor: SharedPreferences.Editor
const val ADSDK = "2qIXFPBROAqtuAoW4uQ78MTqJTfXWGurGLpQvE0iae3vmVXLa8SMxnxgdtq9O1GU3qQVRR1EcHhpS74qiyL8CK" const val AppId = "299712"
const val AD_INIT = "on_success_action" const val AppKey = "40ae65dfdf0d938442cd8f4500ad6524"
const val AD_INIT = "on_SDK_action"
var initOK = false var initOK = false
var count = 0 var count = 0
} }
@ -59,16 +65,21 @@ class App : Application() {
} }
private fun initSDK() { private fun initSDK() {
val sdk: MBridgeSDK = MBridgeSDKFactory.getMBridgeSDK()
val initConfig = AppLovinSdkInitializationConfiguration.builder(ADSDK, this) val map = sdk.getMBConfigurationMap(AppId, AppKey)
.setMediationProvider(AppLovinMediationProvider.MAX) sdk.init(map, this, object : SDKInitStatusListener {
.build() override fun onInitSuccess() {
Log.e(MBrManager.TAG, "onInitSuccess")
AppLovinSdk.getInstance(this).initialize(initConfig){
initOK = true initOK = true
LocalBroadcastManager.getInstance(this).sendBroadcast(Intent(AD_INIT)) LocalBroadcastManager.getInstance(this@App).sendBroadcast(Intent(AD_INIT))
} }
AppLovinSdk.getInstance(this).settings.setVerboseLogging(true)
override fun onInitFail(errorMsg: String) {
Log.e(MBrManager.TAG, errorMsg)
}
})
} }

View File

@ -0,0 +1,25 @@
package com.kitobochi.softapp.timberlock.ad;
import com.mbridge.msdk.newinterstitial.out.MBBidNewInterstitialHandler;
public class ADBean {
private MBBidNewInterstitialHandler interstitialHandler;
private String token;
public void setInterstitialHandler(MBBidNewInterstitialHandler interstitialHandler) {
this.interstitialHandler = interstitialHandler;
}
public void setToken(String token) {
this.token = token;
}
public MBBidNewInterstitialHandler getInterstitialHandler() {
return interstitialHandler;
}
public String getToken() {
return token;
}
}

View File

@ -1,9 +0,0 @@
package com.kitobochi.softapp.timberlock.ad
import com.applovin.mediation.MaxAd
interface AdListener {
fun onFail(ad: MaxAd)
fun onSuccess()
fun onHidden()
}

View File

@ -1,78 +0,0 @@
package com.kitobochi.softapp.timberlock.ad
import android.app.Activity
import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdListener
import com.applovin.mediation.MaxError
import com.applovin.mediation.ads.MaxInterstitialAd
import com.kitobochi.softapp.timberlock.App
object AdManager {
private val one_AD = "02d8ee636a579373"
private val two_Ad = "02d8ee636a579373"
private val three_ad = "0b004d33e636f7f8"
private val list: MutableList<MaxInterstitialAd> = mutableListOf()
fun onCache(list: List<MaxInterstitialAd>): MaxInterstitialAd? {
list.shuffled()
for (ad in list) {
if (ad.isReady) {
return ad
}
}
return null
}
fun adLoad(): List<MaxInterstitialAd> {
if (list.isEmpty()) {
val ad_two = MaxInterstitialAd(two_Ad, App.appContext)
val ad_one = MaxInterstitialAd(one_AD, App.appContext)
val ad_three = MaxInterstitialAd(three_ad, App.appContext)
ad_two.loadAd()
ad_one.loadAd()
ad_three.loadAd()
list.add(ad_one)
list.add(ad_two)
list.add(ad_three)
}
for (ad: MaxInterstitialAd in list) {
if (!ad.isReady) {
ad.loadAd()
}
}
return list
}
fun setAdListener(ad: MaxInterstitialAd, listener: AdListener) {
ad.setListener(object : MaxAdListener {
override fun onAdLoaded(p0: MaxAd) {
}
override fun onAdDisplayed(p0: MaxAd) {
listener.onSuccess()
}
override fun onAdHidden(p0: MaxAd) {
listener.onHidden()
}
override fun onAdClicked(p0: MaxAd) {
}
override fun onAdLoadFailed(p0: String, p1: MaxError) {
}
override fun onAdDisplayFailed(p0: MaxAd, p1: MaxError) {
listener.onFail(p0)
}
})
}
}

View File

@ -0,0 +1,212 @@
package com.kitobochi.softapp.timberlock.ad;
import android.app.Activity;
import android.util.Log;
import com.kitobochi.softapp.timberlock.App;
import com.mbridge.msdk.MBridgeConstans;
import com.mbridge.msdk.mbbid.out.BidListennning;
import com.mbridge.msdk.mbbid.out.BidManager;
import com.mbridge.msdk.mbbid.out.BidResponsed;
import com.mbridge.msdk.newinterstitial.out.MBBidNewInterstitialHandler;
import com.mbridge.msdk.newinterstitial.out.NewInterstitialListener;
import com.mbridge.msdk.out.MBridgeIds;
import com.mbridge.msdk.out.RewardInfo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class MBrManager {
public static String TAG = "------------ltt";
public static String[] placeIDs = new String[]{"1613586", "1613590", "1613594"};
public static String[] unitIDs = new String[]{"3472726", "3472731", "3472735"};
public static List<ADBean> AdInstances = new ArrayList<>();
public static void getToken(String placeId, String unitId, onBidTokenListener listener) {
BidManager manager = new BidManager(placeId, unitId);
manager.setBidListener(new BidListennning() {
@Override
public void onFailed(String s) {
listener.onBidToken("");
}
@Override
public void onSuccessed(BidResponsed bidResponsed) {
String mBidToken = bidResponsed.getBidToken();
listener.onBidToken(mBidToken);
}
});
manager.bid();
}
;
public static void init(Activity activity, onInterHandlerListener listener) {
for (int i = 0; i < 3; i++) {
String finalPlaceId = placeIDs[i];
String unitId = unitIDs[i];
getToken(finalPlaceId, unitId, new onBidTokenListener() {
@Override
public void onBidToken(String token) {
MBBidNewInterstitialHandler mMBBidNewInterstitialHandler = new MBBidNewInterstitialHandler(App.appContext, finalPlaceId, unitId);
ADBean adBean = new ADBean();
Log.d(TAG, "------------token=" + token);
adBean.setToken(token);
adBean.setInterstitialHandler(mMBBidNewInterstitialHandler);
mMBBidNewInterstitialHandler.loadFromBid(token);
AdInstances.add(adBean);
listener.onAddOK();
}
});
}
}
public static void loadAllAd() {
if (AdInstances.size() > 0) {
for (ADBean adBean : AdInstances) {
if (!adBean.getInterstitialHandler().isBidReady()) {
adBean.getInterstitialHandler().loadFromBid(adBean.getToken());
}
}
}
}
public static ADBean getCache() {
Collections.shuffle(AdInstances);
for (ADBean adBean : AdInstances) {
if (adBean.getInterstitialHandler().isBidReady()) {
return adBean;
}
}
return null;
}
public static void setCallBack(MBBidNewInterstitialHandler mbBidNewInterstitialHandler, onAdStatusListener listener) {
mbBidNewInterstitialHandler.setInterstitialVideoListener(new NewInterstitialListener() {
@Override
public void onLoadCampaignSuccess(MBridgeIds ids) {
/**
* 广告已填充
* @param ids 封装的广告id对象
*/
Log.i(TAG, "onLoadCampaignSuccess: " + Thread.currentThread() + " " + ids.toString());
}
@Override
public void onResourceLoadSuccess(MBridgeIds ids) {
/**
* 广告资源加载成功可以播放
* @param ids 封装的广告id对象
*/
Log.i(TAG, "onResourceLoadSuccess: " + Thread.currentThread() + " " + ids.toString());
listener.onLoaded();
}
@Override
public void onResourceLoadFail(MBridgeIds ids, String errorMsg) {
/**
* 广告加载失败
* @param errorMsg 加载错误原因
*/
listener.onLoadFail();
Log.e(TAG, "onResourceLoadFail errorMsg: " + errorMsg + " " + ids.toString());
}
@Override
public void onShowFail(MBridgeIds ids, String errorMsg) {
/**
* 广告播放失败
* @param errorMsg 错误原因
*/
listener.onShowFail();
Log.e(TAG, "onShowFail: " + errorMsg + " " + ids.toString());
}
@Override
public void onAdShow(MBridgeIds ids) {
/**
* 广告成功展示
*/
Log.i(TAG, "onAdShow: " + ids.toString());
}
@Override
public void onAdClose(MBridgeIds ids, RewardInfo info) {
/**
* 广告关闭时调用
* @param info.isCompleteView如果为true则表示已完全观看了视频
*/
listener.onClose();
Log.i(TAG, "onAdClose: " + "isCompleteView" + info.isCompleteView() + " " + ids.toString());
}
@Override
public void onAdClicked(MBridgeIds ids) {
/**
* 广告被点击
* @param 封装的广告id对象
*/
Log.i(TAG, "onAdClicked: " + ids.toString());
}
@Override
public void onVideoComplete(MBridgeIds ids) {
/**
* 广告播放完成时调用
* @param ids 封装的广告id对象
*/
Log.i(TAG, "onVideoComplete: " + ids.toString());
}
@Override
public void onAdCloseWithNIReward(MBridgeIds ids, RewardInfo info) {
/**
* 如果开发人员设置了IV奖励则在广告关闭时调用.
*
* @param 封装的广告id对象
* @param info.isCompleteView() 是否完全观看
*/
Log.i(TAG, "onAdCloseWithNIReward: " + ids.toString() + " " + info.toString());
Log.i(TAG, info.isCompleteView() ? "Video playback/playable is complete." : "Video playback/playable is not complete.");
int rewardAlertStatus = info.getRewardAlertStatus();
if (rewardAlertStatus == MBridgeConstans.IVREWARDALERT_STATUS_NOTSHOWN) {
Log.e(TAG, "The dialog is not show.");
}
if (rewardAlertStatus == MBridgeConstans.IVREWARDALERT_STATUS_CLICKCONTINUE) {
Log.e(TAG, "The dialog's continue button clicked.");
}
if (rewardAlertStatus == MBridgeConstans.IVREWARDALERT_STATUS_CLICKCANCEL) {
Log.e(TAG, "The dialog's cancel button clicked.");
}
}
@Override
public void onEndcardShow(MBridgeIds ids) {
/**
* 展示广告落地页时调用
* @param ids 封装的广告id对象
*/
Log.i(TAG, "onEndcardShow: " + ids.toString());
}
});
}
}

View File

@ -0,0 +1,12 @@
package com.kitobochi.softapp.timberlock.ad;
import com.mbridge.msdk.newinterstitial.out.MBBidNewInterstitialHandler;
public interface onAdStatusListener {
void onLoaded();
void onLoadFail();
void onShowFail();
void onClose();
}

View File

@ -0,0 +1,6 @@
package com.kitobochi.softapp.timberlock.ad;
public interface onBidTokenListener {
void onBidToken(String token);
}

View File

@ -0,0 +1,15 @@
package com.kitobochi.softapp.timberlock.ad;
import com.mbridge.msdk.newinterstitial.out.MBBidNewInterstitialHandler;
public interface onInterHandlerListener {
void onAddOK();
// void onLoaded();
// void onLoadFail();
// void onShowFail();
//
// void onClose();
}

View File

@ -1,23 +1,14 @@
package com.kitobochi.softapp.timberlock.ui.activity package com.kitobochi.softapp.timberlock.ui.activity
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.IntentFilter
import android.os.CountDownTimer import android.os.CountDownTimer
import android.text.Editable import android.text.Editable
import android.text.TextWatcher import android.text.TextWatcher
import android.util.Log
import android.view.View import android.view.View
import android.widget.EditText import android.widget.EditText
import android.widget.Toast import android.widget.Toast
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import com.applovin.mediation.MaxAd
import com.applovin.mediation.ads.MaxInterstitialAd
import com.kitobochi.softapp.timberlock.App import com.kitobochi.softapp.timberlock.App
import com.kitobochi.softapp.timberlock.R import com.kitobochi.softapp.timberlock.R
import com.kitobochi.softapp.timberlock.ad.AdListener
import com.kitobochi.softapp.timberlock.ad.AdManager
import com.kitobochi.softapp.timberlock.databinding.ActivitySetpwdBinding import com.kitobochi.softapp.timberlock.databinding.ActivitySetpwdBinding
class SetPwdActivity : BaseActivity(), View.OnClickListener { class SetPwdActivity : BaseActivity(), View.OnClickListener {
@ -27,7 +18,7 @@ class SetPwdActivity : BaseActivity(), View.OnClickListener {
private val IS_SHOW_AD = "IS_SHOW_AD" private val IS_SHOW_AD = "IS_SHOW_AD"
private val countTime: Long = 12000 private val countTime: Long = 12000
private lateinit var adList: List<MaxInterstitialAd>
private lateinit var timer: CountDownTimer private lateinit var timer: CountDownTimer
override fun getActivityView(): View { override fun getActivityView(): View {
@ -45,61 +36,6 @@ class SetPwdActivity : BaseActivity(), View.OnClickListener {
private fun initAd() { private fun initAd() {
isShowAd = intent.getBooleanExtra(IS_SHOW_AD, false) isShowAd = intent.getBooleanExtra(IS_SHOW_AD, false)
timer = object : CountDownTimer(countTime, 200) {
override fun onTick(millisUntilFinished: Long) {
if (isShowAd) {
startShowAd()
}
}
override fun onFinish() {
if (isShowAd) {
startShowAd()
}
}
}
startAd()
}
private fun startAd() {
if (!App.initOK) {
LocalBroadcastManager.getInstance(this).registerReceiver(object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
loadMyAdAndStart()
Log.d("------------", "------------1sucess")
}
}, IntentFilter(App.AD_INIT))
} else {
loadMyAdAndStart()
Log.d("------------", "------------2sucess")
}
}
private fun loadMyAdAndStart() {
adList = AdManager.adLoad()
timer.start()
}
private fun startShowAd() {
val checkCacheAd = AdManager.onCache(adList)
if (checkCacheAd == null) {
return
} else {
AdManager.setAdListener(checkCacheAd, object : AdListener {
override fun onFail(ad: MaxAd) {
}
override fun onSuccess() {
}
override fun onHidden() {
checkCacheAd.loadAd()
}
})
checkCacheAd.showAd()
}
} }
private fun initInput() { private fun initInput() {

View File

@ -8,31 +8,24 @@ import android.os.CountDownTimer
import android.util.Log import android.util.Log
import android.view.View import android.view.View
import androidx.localbroadcastmanager.content.LocalBroadcastManager import androidx.localbroadcastmanager.content.LocalBroadcastManager
import com.applovin.mediation.MaxAd
import com.applovin.mediation.ads.MaxInterstitialAd
import com.kitobochi.softapp.timberlock.App import com.kitobochi.softapp.timberlock.App
import com.kitobochi.softapp.timberlock.ad.AdListener import com.kitobochi.softapp.timberlock.ad.MBrManager
import com.kitobochi.softapp.timberlock.ad.AdManager import com.kitobochi.softapp.timberlock.ad.onAdStatusListener
import com.kitobochi.softapp.timberlock.ad.onInterHandlerListener
import com.kitobochi.softapp.timberlock.databinding.ActivityStartBinding import com.kitobochi.softapp.timberlock.databinding.ActivityStartBinding
import com.vungle.ads.Ad import com.mbridge.msdk.newinterstitial.out.MBBidNewInterstitialHandler
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
class StartPageActivity : BaseActivity() { class StartPageActivity : BaseActivity() {
private lateinit var binding: ActivityStartBinding private lateinit var binding: ActivityStartBinding
// private val coroutineScope = CoroutineScope(Dispatchers.Main)
private val countTime: Long = 12000 private val countTime: Long = 12000
private val IS_SHOW_AD = "IS_SHOW_AD" private val IS_SHOW_AD = "IS_SHOW_AD"
private lateinit var adList: List<MaxInterstitialAd>
private lateinit var timer: CountDownTimer private lateinit var timer: CountDownTimer
private var needShow = true private var needShow = true
private lateinit var interAd:MBBidNewInterstitialHandler
override fun getActivityView(): View { override fun getActivityView(): View {
binding = ActivityStartBinding.inflate(layoutInflater) binding = ActivityStartBinding.inflate(layoutInflater)
@ -41,12 +34,14 @@ class StartPageActivity : BaseActivity() {
override fun initView() { override fun initView() {
super.initView() super.initView()
Log.d("start-ad", "onCreate")
timer = object : CountDownTimer(countTime, 200) { timer = object : CountDownTimer(countTime, 200) {
override fun onTick(millisUntilFinished: Long) { override fun onTick(millisUntilFinished: Long) {
if (needShow) { if (needShow) {
startShowAd {} startShowAd {
if(it){
startMainActivity()
}
}
} }
} }
@ -59,7 +54,6 @@ class StartPageActivity : BaseActivity() {
} }
} }
startAd() startAd()
// startMainActivity()
} }
private fun startAd() { private fun startAd() {
@ -76,35 +70,45 @@ class StartPageActivity : BaseActivity() {
} }
} }
private fun loadMyAdAndStart() {
adList = AdManager.adLoad()
timer.start()
}
private fun startShowAd(action: () -> Unit) { private fun startShowAd(action:(go :Boolean)->Unit){
val checkCacheAd = AdManager.onCache(adList) val cache = MBrManager.getCache()
if (checkCacheAd == null) { if(cache == null){
action.invoke() action.invoke(false)
}else{ }else{
needShow = false needShow = false
AdManager.setAdListener(checkCacheAd, object : AdListener { MBrManager.setCallBack(cache.interstitialHandler,object : onAdStatusListener{
override fun onFail(ad: MaxAd) { override fun onLoaded() {
startMainActivity()
}
override fun onSuccess() {
} }
override fun onHidden() { override fun onLoadFail() {
startMainActivity()
checkCacheAd.loadAd() }
override fun onShowFail() {
action.invoke(true)
}
override fun onClose() {
action.invoke(true)
} }
}) })
checkCacheAd.showAd() cache.interstitialHandler.showFromBid()
} }
} }
private fun loadMyAdAndStart() {
MBrManager.init(this
) {
timer.start()
}
}
private fun startMainActivity() { private fun startMainActivity() {

View File

@ -12,13 +12,11 @@ import android.widget.TextView
import android.widget.Toast import android.widget.Toast
import androidx.appcompat.widget.SwitchCompat import androidx.appcompat.widget.SwitchCompat
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.applovin.mediation.MaxAd
import com.applovin.mediation.ads.MaxInterstitialAd
import com.kitobochi.softapp.timberlock.App import com.kitobochi.softapp.timberlock.App
import com.kitobochi.softapp.timberlock.R import com.kitobochi.softapp.timberlock.R
import com.kitobochi.softapp.timberlock.ad.AdListener
import com.kitobochi.softapp.timberlock.ad.AdManager
import com.kitobochi.softapp.timberlock.ad.AdMsgListener import com.kitobochi.softapp.timberlock.ad.AdMsgListener
import com.kitobochi.softapp.timberlock.ad.MBrManager
import com.kitobochi.softapp.timberlock.ad.onAdStatusListener
import com.kitobochi.softapp.timberlock.db.AppDatabase import com.kitobochi.softapp.timberlock.db.AppDatabase
import com.kitobochi.softapp.timberlock.db.AppEntity import com.kitobochi.softapp.timberlock.db.AppEntity
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
@ -48,7 +46,9 @@ class AppListAdapter(
} }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AppListVH { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AppListVH {
return AppListVH(LayoutInflater.from(parent.context).inflate(R.layout.item_app, parent, false)) return AppListVH(
LayoutInflater.from(parent.context).inflate(R.layout.item_app, parent, false)
)
} }
override fun getItemCount(): Int { override fun getItemCount(): Int {
@ -56,7 +56,8 @@ class AppListAdapter(
} }
private fun getAppLog(packageName: String): Drawable { private fun getAppLog(packageName: String): Drawable {
val applicationInfo = packageManager.getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES) val applicationInfo =
packageManager.getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES)
return packageManager.getApplicationIcon(applicationInfo) return packageManager.getApplicationIcon(applicationInfo)
} }
@ -79,11 +80,13 @@ class AppListAdapter(
} else { } else {
format = String.format(mContext.getString(R.string.text_unlocked), appName) format = String.format(mContext.getString(R.string.text_unlocked), appName)
} }
Toast.makeText(mContext, format, Toast.LENGTH_SHORT).show()
if (App.count % 5 == 0) { if (App.count % 5 == 0) {
showAd({ showPopup(format) }, format) showAd({ showPopup(format) }, format)
}else{
Toast.makeText(mContext, format, Toast.LENGTH_SHORT).show()
} }
App.count++ App.count++
@ -99,29 +102,34 @@ class AppListAdapter(
} }
private fun showAd(action: () -> Unit, msg: String) { private fun showAd(action: () -> Unit, msg: String) {
val adList = AdManager.adLoad()
val checkCacheAd = AdManager.onCache(adList) val cache = MBrManager.getCache()
if (checkCacheAd == null) { if (cache == null) {
action.invoke() action.invoke()
} else { } else {
AdManager.setAdListener(checkCacheAd, object : AdListener { MBrManager.setCallBack(cache.interstitialHandler, object : onAdStatusListener {
override fun onFail(ad: MaxAd) { override fun onLoaded() {
showPopup(msg)
}
override fun onSuccess() {
} }
override fun onHidden() { override fun onLoadFail() {
}
override fun onShowFail() {
showPopup(msg) showPopup(msg)
checkCacheAd.loadAd() }
override fun onClose() {
showPopup(msg)
MBrManager.loadAllAd()
} }
}) })
checkCacheAd.showAd() cache.interstitialHandler.showFromBid()
} }
} }
private fun showPopup(msg: String) { private fun showPopup(msg: String) {

View File

@ -1,11 +1,10 @@
package com.kitobochi.softapp.timberlock.ui.fragment package com.kitobochi.softapp.timberlock.ui.fragment
import android.app.AlertDialog import android.app.AlertDialog
import android.util.Log
import android.view.View import android.view.View
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.kitobochi.softapp.timberlock.ad.AdListener
import com.kitobochi.softapp.timberlock.ad.AdMsgListener import com.kitobochi.softapp.timberlock.ad.AdMsgListener
import com.kitobochi.softapp.timberlock.ad.MBrManager
import com.kitobochi.softapp.timberlock.databinding.FragmentApplistBinding import com.kitobochi.softapp.timberlock.databinding.FragmentApplistBinding
import com.kitobochi.softapp.timberlock.db.AppDatabase import com.kitobochi.softapp.timberlock.db.AppDatabase
import com.kitobochi.softapp.timberlock.ui.adapter.AppListAdapter import com.kitobochi.softapp.timberlock.ui.adapter.AppListAdapter
@ -27,6 +26,7 @@ class AppListFragment(
override fun initView() { override fun initView() {
super.initView() super.initView()
initAppList() initAppList()
MBrManager.loadAllAd()
} }
private fun initAppList() { private fun initAppList() {

View File

@ -5,6 +5,8 @@ import android.net.Uri
import android.view.View import android.view.View
import com.kitobochi.softapp.timberlock.App import com.kitobochi.softapp.timberlock.App
import com.kitobochi.softapp.timberlock.R import com.kitobochi.softapp.timberlock.R
import com.kitobochi.softapp.timberlock.ad.MBrManager
import com.kitobochi.softapp.timberlock.ad.onAdStatusListener
import com.kitobochi.softapp.timberlock.databinding.FragmentSettingBinding import com.kitobochi.softapp.timberlock.databinding.FragmentSettingBinding
import com.kitobochi.softapp.timberlock.tools.LockServiceManager import com.kitobochi.softapp.timberlock.tools.LockServiceManager
import com.kitobochi.softapp.timberlock.ui.activity.SetPwdActivity import com.kitobochi.softapp.timberlock.ui.activity.SetPwdActivity
@ -15,6 +17,7 @@ class SettingFragment : BaseFragment(), View.OnClickListener {
private lateinit var binding: FragmentSettingBinding private lateinit var binding: FragmentSettingBinding
override fun getFragmentView(): View { override fun getFragmentView(): View {
binding = FragmentSettingBinding.inflate(layoutInflater) binding = FragmentSettingBinding.inflate(layoutInflater)
MBrManager.loadAllAd()
return binding.root return binding.root
} }
@ -48,14 +51,48 @@ class SettingFragment : BaseFragment(), View.OnClickListener {
} }
binding.settingPassword -> { binding.settingPassword -> {
showAd{
val intent = Intent(requireContext(), SetPwdActivity::class.java) val intent = Intent(requireContext(), SetPwdActivity::class.java)
intent.putExtra(IS_SHOW_AD, true) intent.putExtra(IS_SHOW_AD, true)
startActivity(intent) startActivity(intent)
} }
}
// binding.settingInit -> { // binding.settingInit -> {
//// LockServiceManager().toSetUsagePermission(requireActivity(), App().reqCodeUsage) //// LockServiceManager().toSetUsagePermission(requireActivity(), App().reqCodeUsage)
// } // }
} }
} }
private fun showAd(action: () -> Unit) {
val cache = MBrManager.getCache()
if (cache == null) {
action.invoke()
} else {
MBrManager.setCallBack(cache.interstitialHandler, object : onAdStatusListener {
override fun onLoaded() {
}
override fun onLoadFail() {
}
override fun onShowFail() {
action.invoke()
}
override fun onClose() {
action.invoke()
MBrManager.loadAllAd()
}
})
cache.interstitialHandler.showFromBid()
}
}
} }

View File

@ -1,9 +1,5 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules. // Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript{
dependencies{
classpath("com.applovin.quality:AppLovinQualityServiceGradlePlugin:+")
}
}
plugins { plugins {
alias(libs.plugins.androidApplication) apply false alias(libs.plugins.androidApplication) apply false

View File

@ -9,7 +9,7 @@ pluginManagement {
} }
mavenCentral() mavenCentral()
gradlePluginPortal() gradlePluginPortal()
maven { url "https://artifacts.applovin.com/android"}
} }
} }
dependencyResolutionManagement { dependencyResolutionManagement {
@ -17,10 +17,12 @@ dependencyResolutionManagement {
repositories { repositories {
google() google()
mavenCentral() mavenCentral()
maven { url "https://artifact.bytedance.com/repository/pangle" } maven {
maven { url = uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea") } url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea"
}
} }
} }
rootProject.name = "TimberLock" rootProject.name = "AppLock Defender"
include ':app' include ':app'