Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
F
Fast File Manager Pro
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanglei
Fast File Manager Pro
Commits
20700db5
Commit
20700db5
authored
Mar 29, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
白包接开屏广告和原生高级广告
parent
4dda6061
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
86 additions
and
58 deletions
+86
-58
deploymentTargetDropDown.xml
.idea/deploymentTargetDropDown.xml
+1
-14
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+5
-0
CommonViewModel.kt
.../main/java/com/zxhy/fastfilemanagerpro/CommonViewModel.kt
+3
-1
KokoLaunchActivity.kt
...in/java/com/zxhy/fastfilemanagerpro/KokoLaunchActivity.kt
+31
-19
MainActivity.kt
...src/main/java/com/zxhy/fastfilemanagerpro/MainActivity.kt
+23
-19
GoogleMobileAdsConsentManager.kt
...stfilemanagerpro/kokoads/GoogleMobileAdsConsentManager.kt
+2
-0
KokoOpenAdManager.kt
.../com/zxhy/fastfilemanagerpro/kokoads/KokoOpenAdManager.kt
+17
-1
ad_native_advance.xml
app/src/main/res/layout/ad_native_advance.xml
+1
-1
fragment_ko_managerko.xml
app/src/main/res/layout/fragment_ko_managerko.xml
+2
-2
strings.xml
app/src/main/res/values/strings.xml
+1
-1
No files found.
.idea/deploymentTargetDropDown.xml
View file @
20700db5
...
...
@@ -3,20 +3,7 @@
<component
name=
"deploymentTargetDropDown"
>
<value>
<entry
key=
"app"
>
<State>
<runningDeviceTargetSelectedWithDropDown>
<Target>
<type
value=
"RUNNING_DEVICE_TARGET"
/>
<deviceKey>
<Key>
<type
value=
"SERIAL_NUMBER"
/>
<value
value=
"adb-3426369207001D6-FYisxI._adb-tls-connect._tcp"
/>
</Key>
</deviceKey>
</Target>
</runningDeviceTargetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown
value=
"2024-03-27T10:49:46.632111500Z"
/>
</State>
<State
/>
</entry>
</value>
</component>
...
...
app/src/main/AndroidManifest.xml
View file @
20700db5
...
...
@@ -35,21 +35,25 @@
<activity
android:launchMode=
"singleTop"
android:name=
".kokoInternalstorage.KoInternalkoActivity"
android:exported=
"false"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<activity
android:launchMode=
"singleTop"
android:name=
".kokodup.KoDupFilekoActivity"
android:exported=
"false"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<activity
android:launchMode=
"singleTop"
android:name=
".kokolistfile.KoListFilekoActivity"
android:exported=
"false"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<activity
android:launchMode=
"singleTop"
android:name=
".kokogridfile.KoGridFilekoActivity"
android:exported=
"false"
android:screenOrientation=
"portrait"
...
...
@@ -66,6 +70,7 @@
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<activity
android:name=
".MainActivity"
android:exported=
"true"
...
...
app/src/main/java/com/zxhy/fastfilemanagerpro/CommonViewModel.kt
View file @
20700db5
...
...
@@ -112,7 +112,9 @@ abstract class CommonViewModel : ViewModel() {
if
(
filter
(
file
))
{
resultList
.
add
(
file
.
koFileDatako
(
context
))
if
(
resultList
.
size
==
20
&&
!
firstSend
)
{
onDo
.
invoke
(
resultList
)
val
mainList
=
arrayListOf
<
KoFileDatako
>()
mainList
.
addAll
(
resultList
)
onDo
.
invoke
(
mainList
)
resultList
.
clear
()
firstSend
=
true
}
...
...
app/src/main/java/com/zxhy/fastfilemanagerpro/KokoLaunchActivity.kt
View file @
20700db5
...
...
@@ -11,8 +11,10 @@ import androidx.core.view.ViewCompat
import
androidx.core.view.WindowInsetsCompat
import
androidx.lifecycle.lifecycleScope
import
com.google.android.gms.ads.MobileAds
import
com.google.android.ump.FormError
import
com.zxhy.fastfilemanagerpro.databinding.ActivityKokoLaunchBinding
import
com.zxhy.fastfilemanagerpro.kokoads.GoogleMobileAdsConsentManager
import
com.zxhy.fastfilemanagerpro.kokoads.KokoOpenAdManager
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.delay
import
kotlinx.coroutines.launch
...
...
@@ -25,6 +27,7 @@ class KokoLaunchActivity : AppCompatActivity() {
private
lateinit
var
binding
:
ActivityKokoLaunchBinding
private
val
isAdsInitializeCalled
=
AtomicBoolean
(
false
)
private
lateinit
var
googleMobileAdsConsentManager
:
GoogleMobileAdsConsentManager
private
lateinit
var
kokoOpenAdManager
:
KokoOpenAdManager
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
...
...
@@ -36,40 +39,49 @@ class KokoLaunchActivity : AppCompatActivity() {
v
.
setPadding
(
systemBars
.
left
,
systemBars
.
top
,
systemBars
.
right
,
systemBars
.
bottom
)
insets
}
kokoOpenAdManager
=
(
application
as
MyApplication
).
kokoOpenAdManager
(
application
as
MyApplication
).
kokoOpenAdManager
.
adShowComplete
=
{
showed
->
if
(
showed
)
{
printTaskActivity
()
startActivity
(
Intent
(
this
,
MainActivity
::
class
.
java
))
}
else
{
lifecycleScope
.
launch
(
Dispatchers
.
Main
)
{
while
(
binding
.
ProgressBar
.
progress
!=
100
)
{
binding
.
ProgressBar
.
progress
+=
2
delay
(
50
)
}
startActivity
(
Intent
(
this
@KokoLaunchActivity
,
MainActivity
::
class
.
java
))
finish
()
}
val
job
=
lifecycleScope
.
launch
(
Dispatchers
.
Main
)
{
while
(
binding
.
ProgressBar
.
progress
!=
100
)
{
binding
.
ProgressBar
.
progress
+=
2
delay
(
50
)
}
startActivity
(
Intent
(
this
@KokoLaunchActivity
,
MainActivity
::
class
.
java
))
finish
()
}
setDebugAdsConsent
()
(
application
as
MyApplication
).
kokoOpenAdManager
.
showAdIfAvailable
(
this
)
kokoOpenAdManager
.
adLoadComplete
=
{
loaded
->
if
(
loaded
)
{
job
.
cancel
()
kokoOpenAdManager
.
showAdIfAvailable
(
this
@KokoLaunchActivity
)
}
}
kokoOpenAdManager
.
adShowing
=
{
job
.
cancel
()
}
kokoOpenAdManager
.
adShowComplete
=
{
job
.
cancel
()
kokoOpenAdManager
.
clearAllCallBack
()
startActivity
(
Intent
(
this
@KokoLaunchActivity
,
MainActivity
::
class
.
java
))
finish
()
}
setDebugAdsConsent
{}
}
/**
* 设置Debug广告同意
*/
private
fun
setDebugAdsConsent
()
{
private
fun
setDebugAdsConsent
(
gatherConsentAction
:
(
consentError
:
FormError
?)
->
Unit
)
{
googleMobileAdsConsentManager
=
GoogleMobileAdsConsentManager
.
getInstance
(
applicationContext
)
//获取广告同意设置
googleMobileAdsConsentManager
.
gatherConsent
(
this
)
{
consentError
->
if
(
consentError
!=
null
)
{
}
gatherConsentAction
.
invoke
(
consentError
)
if
(
googleMobileAdsConsentManager
.
canRequestAds
)
{
initializeMobileAdsSdk
()
...
...
app/src/main/java/com/zxhy/fastfilemanagerpro/MainActivity.kt
View file @
20700db5
package
com.zxhy.fastfilemanagerpro
import
android.content.Intent
import
android.net.Uri
import
android.os.Build
import
android.os.Bundle
import
android.view.MenuItem
...
...
@@ -12,6 +13,7 @@ import androidx.appcompat.app.AppCompatActivity
import
androidx.core.content.ContextCompat
import
androidx.core.view.ViewCompat
import
androidx.core.view.WindowInsetsCompat
import
androidx.navigation.NavOptions
import
androidx.navigation.findNavController
import
androidx.navigation.fragment.NavHostFragment
import
com.google.android.gms.ads.AdListener
...
...
@@ -50,17 +52,6 @@ class MainActivity : AppCompatActivity() {
val
navHostFragment
=
supportFragmentManager
.
findFragmentById
(
R
.
id
.
container
)
as
NavHostFragment
navHostFragment
.
navController
.
addOnDestinationChangedListener
{
controller
,
destination
,
arguments
->
when
(
destination
.
id
)
{
R
.
id
.
koManagerkoFragment
->
{
binding
.
bnv
.
selectedItemId
=
R
.
id
.
nav_manager
}
R
.
id
.
koHomekoFragment
->
{
binding
.
bnv
.
selectedItemId
=
R
.
id
.
nav_home
}
}
}
binding
.
bnv
.
setOnItemSelectedListener
(
object
:
AdapterView
.
OnItemSelectedListener
,
NavigationBarView
.
OnItemSelectedListener
{
...
...
@@ -81,13 +72,28 @@ class MainActivity : AppCompatActivity() {
when
(
item
.
itemId
)
{
R
.
id
.
nav_manager
->
{
runCatching
{
findNavController
(
R
.
id
.
container
).
navigate
(
R
.
id
.
action_koHomekoFragment_to_koManagerkoFragment
)
val
navOptions
=
NavOptions
.
Builder
()
.
setLaunchSingleTop
(
true
)
.
setPopUpTo
(
R
.
id
.
koHomekoFragment
,
true
)
.
build
()
navHostFragment
.
navController
.
navigate
(
R
.
id
.
action_koHomekoFragment_to_koManagerkoFragment
,
null
,
navOptions
)
}
}
R
.
id
.
nav_home
->
{
runCatching
{
findNavController
(
R
.
id
.
container
).
navigate
(
R
.
id
.
action_koManagerkoFragment_to_koHomekoFragment
)
val
navOptions
=
NavOptions
.
Builder
()
.
setLaunchSingleTop
(
true
)
.
setPopUpTo
(
R
.
id
.
koManagerkoFragment
,
true
)
.
build
()
navHostFragment
.
navController
.
navigate
(
R
.
id
.
action_koManagerkoFragment_to_koHomekoFragment
,
null
,
navOptions
)
}
}
}
...
...
@@ -104,18 +110,16 @@ class MainActivity : AppCompatActivity() {
}
}
override
fun
onRestart
()
{
super
.
onRestart
()
startActivity
(
Intent
(
this
,
KokoLaunchActivity
::
class
.
java
)
)
(
application
as
MyApplication
).
kokoOpenAdManager
.
showAdIfAvailable
(
this
)
}
fun
setSystemBarColor
(
@ColorRes
colorRes
:
Int
)
{
// color_b3000000 权限窗口颜色
window
.
statusBarColor
=
ContextCompat
.
getColor
(
this
,
colorRes
)
override
fun
onDestroy
()
{
super
.
onDestroy
()
}
companion
object
{
const
val
ADMOB_AD_UNIT_ID
=
"ca-app-pub-3940256099942544/2247696110"
}
...
...
app/src/main/java/com/zxhy/fastfilemanagerpro/kokoads/GoogleMobileAdsConsentManager.kt
View file @
20700db5
...
...
@@ -36,6 +36,7 @@ class GoogleMobileAdsConsentManager private constructor(context: Context) {
val
params
=
ConsentRequestParameters
.
Builder
().
setConsentDebugSettings
(
debugSettings
).
build
()
consentInformation
.
requestConsentInfoUpdate
(
activity
,
params
,
{
//同意信息上传成功回调
UserMessagingPlatform
.
loadAndShowConsentFormIfRequired
(
activity
)
{
formError
->
...
...
@@ -47,6 +48,7 @@ class GoogleMobileAdsConsentManager private constructor(context: Context) {
consentGatheringComplete
.
invoke
(
requestConsentError
)
}
)
}
...
...
app/src/main/java/com/zxhy/fastfilemanagerpro/kokoads/KokoOpenAdManager.kt
View file @
20700db5
...
...
@@ -22,7 +22,16 @@ class KokoOpenAdManager {
private
var
isShowingAd
=
false
private
var
loadTime
:
Long
=
0
//广告加载的时间
var
adShowing
:
(()
->
Unit
)?
=
null
var
adShowComplete
:
((
showed
:
Boolean
)
->
Unit
)?
=
null
var
adLoadComplete
:
((
loaded
:
Boolean
)
->
Unit
)?
=
null
fun
clearAllCallBack
()
{
adShowing
=
null
adShowComplete
=
null
adLoadComplete
=
null
}
/**
* 广告加载回调
...
...
@@ -32,10 +41,12 @@ class KokoOpenAdManager {
appOpenAd
=
ad
isLoadingAd
=
false
loadTime
=
Date
().
time
adLoadComplete
?.
invoke
(
true
)
}
override
fun
onAdFailedToLoad
(
loadAdError
:
LoadAdError
)
{
isLoadingAd
=
false
adLoadComplete
?.
invoke
(
true
)
}
}
...
...
@@ -44,6 +55,7 @@ class KokoOpenAdManager {
*/
inner
class
MyFullScreenContentCallback
(
val
activity
:
Activity
)
:
FullScreenContentCallback
()
{
override
fun
onAdShowedFullScreenContent
()
{
adShowing
?.
invoke
()
Log
.
d
(
LOG_TAG
,
"onAdShowedFullScreenContent."
)
}
...
...
@@ -93,11 +105,14 @@ class KokoOpenAdManager {
* 显示广告
*/
fun
showAdIfAvailable
(
activity
:
Activity
)
{
val
TAG
=
"showAdIfAvailable"
if
(
isShowingAd
)
{
Log
.
e
(
TAG
,
"isShowingAd=${isShowingAd}"
)
return
}
if
(!
existOpenAdCanShow
())
{
Log
.
e
(
TAG
,
"existOpenAdCanShow=false"
)
adShowComplete
?.
invoke
(
false
)
if
(
googleMobileAdsConsentManager
.
canRequestAds
)
{
loadAd
(
activity
)
...
...
@@ -108,11 +123,12 @@ class KokoOpenAdManager {
appOpenAd
?.
fullScreenContentCallback
=
MyFullScreenContentCallback
(
activity
)
isShowingAd
=
true
Log
.
e
(
TAG
,
"调用展示广告"
)
appOpenAd
?.
show
(
activity
)
}
/**
* 检查已有广告是否显示
* 检查已有广告是否
可
显示
*/
fun
existOpenAdCanShow
():
Boolean
{
return
appOpenAd
!=
null
&&
adLoadLessInterval
(
1
)
...
...
app/src/main/res/layout/ad_native_advance.xml
View file @
20700db5
...
...
@@ -81,7 +81,7 @@
<com.google.android.gms.ads.nativead.MediaView
android:id=
"@+id/ad_media"
android:layout_width=
"
250dp
"
android:layout_width=
"
match_parent
"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"5dp"
...
...
app/src/main/res/layout/fragment_ko_managerko.xml
View file @
20700db5
...
...
@@ -9,7 +9,7 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width=
"match_parent"
android:layout_height=
"
match_par
ent"
>
android:layout_height=
"
wrap_cont
ent"
>
<TextView
android:id=
"@+id/tv_app_name"
...
...
@@ -272,7 +272,7 @@
<FrameLayout
android:id=
"@+id/fl_ad"
android:layout_width=
"0dp"
android:layout_height=
"
wrap_content
"
android:layout_height=
"
140dp
"
android:layout_marginHorizontal=
"20dp"
android:layout_marginTop=
"20dp"
app:layout_constraintEnd_toEndOf=
"parent"
...
...
app/src/main/res/values/strings.xml
View file @
20700db5
<resources>
<string
name=
"app_name"
>
fastFileManager
Pro
</string>
<string
name=
"app_name"
>
Fast File Manager
Pro
</string>
<string
name=
"permission_tips"
>
There are no permissions We need to get permission to read all files.
</string>
</resources>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment