更换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
app/release/AppLock Defender1.1(2).aab
app/release/app-release.apk
app/release/

View File

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

View File

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

View File

@ -4,13 +4,18 @@ import android.app.Application
import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
import android.util.Log
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import com.applovin.sdk.AppLovinMediationProvider
import com.applovin.sdk.AppLovinSdk
import com.applovin.sdk.AppLovinSdkInitializationConfiguration
import com.kitobochi.softapp.timberlock.ad.MBrManager
import com.kitobochi.softapp.timberlock.db.AppDatabase
import com.kitobochi.softapp.timberlock.db.AppEntity
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.Dispatchers
import kotlinx.coroutines.launch
@ -27,8 +32,9 @@ class App : Application() {
lateinit var sp: SharedPreferences
lateinit var SpEditor: SharedPreferences.Editor
const val ADSDK = "2qIXFPBROAqtuAoW4uQ78MTqJTfXWGurGLpQvE0iae3vmVXLa8SMxnxgdtq9O1GU3qQVRR1EcHhpS74qiyL8CK"
const val AD_INIT = "on_success_action"
const val AppId = "299712"
const val AppKey = "40ae65dfdf0d938442cd8f4500ad6524"
const val AD_INIT = "on_SDK_action"
var initOK = false
var count = 0
}
@ -59,16 +65,21 @@ class App : Application() {
}
private fun initSDK() {
val initConfig = AppLovinSdkInitializationConfiguration.builder(ADSDK, this)
.setMediationProvider(AppLovinMediationProvider.MAX)
.build()
AppLovinSdk.getInstance(this).initialize(initConfig){
val sdk: MBridgeSDK = MBridgeSDKFactory.getMBridgeSDK()
val map = sdk.getMBConfigurationMap(AppId, AppKey)
sdk.init(map, this, object : SDKInitStatusListener {
override fun onInitSuccess() {
Log.e(MBrManager.TAG, "onInitSuccess")
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
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.CountDownTimer
import android.text.Editable
import android.text.TextWatcher
import android.util.Log
import android.view.View
import android.widget.EditText
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.R
import com.kitobochi.softapp.timberlock.ad.AdListener
import com.kitobochi.softapp.timberlock.ad.AdManager
import com.kitobochi.softapp.timberlock.databinding.ActivitySetpwdBinding
class SetPwdActivity : BaseActivity(), View.OnClickListener {
@ -27,7 +18,7 @@ class SetPwdActivity : BaseActivity(), View.OnClickListener {
private val IS_SHOW_AD = "IS_SHOW_AD"
private val countTime: Long = 12000
private lateinit var adList: List<MaxInterstitialAd>
private lateinit var timer: CountDownTimer
override fun getActivityView(): View {
@ -45,61 +36,6 @@ class SetPwdActivity : BaseActivity(), View.OnClickListener {
private fun initAd() {
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() {

View File

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

View File

@ -12,13 +12,11 @@ import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.widget.SwitchCompat
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.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.MBrManager
import com.kitobochi.softapp.timberlock.ad.onAdStatusListener
import com.kitobochi.softapp.timberlock.db.AppDatabase
import com.kitobochi.softapp.timberlock.db.AppEntity
import kotlinx.coroutines.CoroutineScope
@ -48,7 +46,9 @@ class AppListAdapter(
}
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 {
@ -56,7 +56,8 @@ class AppListAdapter(
}
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)
}
@ -79,11 +80,13 @@ class AppListAdapter(
} else {
format = String.format(mContext.getString(R.string.text_unlocked), appName)
}
Toast.makeText(mContext, format, Toast.LENGTH_SHORT).show()
if (App.count % 5 == 0) {
showAd({ showPopup(format) }, format)
}else{
Toast.makeText(mContext, format, Toast.LENGTH_SHORT).show()
}
App.count++
@ -99,29 +102,34 @@ class AppListAdapter(
}
private fun showAd(action: () -> Unit, msg: String) {
val adList = AdManager.adLoad()
val checkCacheAd = AdManager.onCache(adList)
if (checkCacheAd == null) {
val cache = MBrManager.getCache()
if (cache == null) {
action.invoke()
} else {
AdManager.setAdListener(checkCacheAd, object : AdListener {
override fun onFail(ad: MaxAd) {
showPopup(msg)
}
override fun onSuccess() {
MBrManager.setCallBack(cache.interstitialHandler, object : onAdStatusListener {
override fun onLoaded() {
}
override fun onHidden() {
override fun onLoadFail() {
}
override fun onShowFail() {
showPopup(msg)
checkCacheAd.loadAd()
}
override fun onClose() {
showPopup(msg)
MBrManager.loadAllAd()
}
})
checkCacheAd.showAd()
cache.interstitialHandler.showFromBid()
}
}
private fun showPopup(msg: String) {

View File

@ -1,11 +1,10 @@
package com.kitobochi.softapp.timberlock.ui.fragment
import android.app.AlertDialog
import android.util.Log
import android.view.View
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.MBrManager
import com.kitobochi.softapp.timberlock.databinding.FragmentApplistBinding
import com.kitobochi.softapp.timberlock.db.AppDatabase
import com.kitobochi.softapp.timberlock.ui.adapter.AppListAdapter
@ -27,6 +26,7 @@ class AppListFragment(
override fun initView() {
super.initView()
initAppList()
MBrManager.loadAllAd()
}
private fun initAppList() {

View File

@ -5,6 +5,8 @@ import android.net.Uri
import android.view.View
import com.kitobochi.softapp.timberlock.App
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.tools.LockServiceManager
import com.kitobochi.softapp.timberlock.ui.activity.SetPwdActivity
@ -15,6 +17,7 @@ class SettingFragment : BaseFragment(), View.OnClickListener {
private lateinit var binding: FragmentSettingBinding
override fun getFragmentView(): View {
binding = FragmentSettingBinding.inflate(layoutInflater)
MBrManager.loadAllAd()
return binding.root
}
@ -48,14 +51,48 @@ class SettingFragment : BaseFragment(), View.OnClickListener {
}
binding.settingPassword -> {
showAd{
val intent = Intent(requireContext(), SetPwdActivity::class.java)
intent.putExtra(IS_SHOW_AD, true)
startActivity(intent)
}
}
// binding.settingInit -> {
//// 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.
buildscript{
dependencies{
classpath("com.applovin.quality:AppLovinQualityServiceGradlePlugin:+")
}
}
plugins {
alias(libs.plugins.androidApplication) apply false

View File

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