Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
B
Browser White
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
Browser White
Commits
725a51a7
Commit
725a51a7
authored
Aug 14, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...
parent
09aaa6f5
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
235 additions
and
6 deletions
+235
-6
NewsBean.kt
app/src/main/java/com/base/browserwhite/bean/NewsBean.kt
+10
-5
ResultActivity.kt
...om/base/browserwhite/ui/activity/result/ResultActivity.kt
+1
-1
AESHelper.kt
app/src/main/java/com/base/browserwhite/utils/AESHelper.kt
+62
-0
ConfigHelper.kt
...src/main/java/com/base/browserwhite/utils/ConfigHelper.kt
+47
-0
LogEx.kt
app/src/main/java/com/base/browserwhite/utils/LogEx.kt
+1
-0
NewsUtils.kt
app/src/main/java/com/base/browserwhite/utils/NewsUtils.kt
+114
-0
No files found.
app/src/main/java/com/base/browserwhite/bean/NewsBean.kt
View file @
725a51a7
package
com.base.browserwhite.bean
class
NewsBean
(
val
imageUri
:
String
=
""
,
val
tittle
:
String
=
""
,
val
webIcon
:
String
=
""
,
val
webSite
:
String
,
val
time
:
Long
=
0
val
newsId
:
Long
=
0
,
val
publishTime
:
Long
=
0
,
val
headline
:
String
=
""
,
//标题
val
orgImgPath
:
String
=
""
,
//原媒体图片
val
mediaName
:
String
=
""
,
val
mediaIcon
:
String
=
""
,
//媒体icon
val
categoryId
:
Int
=
0
,
val
type
:
Int
=
0
,
val
linkPath
:
String
=
""
,
//网站链接
)
\ No newline at end of file
app/src/main/java/com/base/browserwhite/ui/activity/result/ResultActivity.kt
View file @
725a51a7
...
...
@@ -8,6 +8,7 @@ import com.base.browserwhite.ui.activity.BaseActivity
import
com.base.browserwhite.utils.AppPreferences
import
com.base.browserwhite.utils.BarUtils
import
com.base.browserwhite.utils.KotlinExt.toFormatSize
import
com.google.gson.JsonObject
class
ResultActivity
:
BaseActivity
<
ActivityResultBinding
>()
{
...
...
@@ -22,7 +23,6 @@ class ResultActivity : BaseActivity<ActivityResultBinding>() {
BarUtils
.
setStatusBarColor
(
this
,
Color
.
TRANSPARENT
)
// binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
val
from
=
intent
.
getStringExtra
(
"from"
)
when
(
from
)
{
JUNK_CLEANER
->
{
...
...
app/src/main/java/com/base/browserwhite/utils/AESHelper.kt
0 → 100644
View file @
725a51a7
package
com.base.browserwhite.utils
import
android.util.Base64
import
java.security.SecureRandom
import
javax.crypto.Cipher
import
javax.crypto.spec.GCMParameterSpec
import
javax.crypto.spec.SecretKeySpec
object
AESHelper
{
private
const
val
aesKey
=
"g78bbcrtr4iaeekw"
private
val
cipher
by
lazy
{
Cipher
.
getInstance
(
"AES/GCM/NoPadding"
)
}
fun
encrypt
(
content
:
String
):
String
{
try
{
val
iv
=
ByteArray
(
12
).
apply
{
SecureRandom
().
nextBytes
(
this
)
}
val
contentBytes
=
content
.
toByteArray
(
Charsets
.
UTF_8
)
val
params
=
GCMParameterSpec
(
128
,
iv
)
cipher
.
init
(
Cipher
.
ENCRYPT_MODE
,
secretKey
,
params
)
val
encryptData
=
cipher
.
doFinal
(
contentBytes
)
if
(
encryptData
.
size
!=
contentBytes
.
size
+
16
)
{
throw
IllegalStateException
(
"Encryption failed"
)
}
val
message
=
ByteArray
(
12
+
contentBytes
.
size
+
16
)
System
.
arraycopy
(
iv
,
0
,
message
,
0
,
12
)
System
.
arraycopy
(
encryptData
,
0
,
message
,
12
,
encryptData
.
size
)
return
String
(
Base64
.
encode
(
message
,
Base64
.
NO_WRAP
),
Charsets
.
UTF_8
)
}
catch
(
_
:
Exception
)
{
}
return
content
}
@Synchronized
fun
decrypt
(
content
:
String
):
String
{
try
{
val
con
=
content
.
replace
(
" "
.
toRegex
(),
"+"
)
val
contentByte
=
Base64
.
decode
(
con
,
Base64
.
NO_WRAP
)
require
(
contentByte
.
size
>=
12
+
16
)
val
params
=
GCMParameterSpec
(
128
,
contentByte
,
0
,
12
)
cipher
.
init
(
Cipher
.
DECRYPT_MODE
,
secretKey
,
params
)
val
decryptData
=
cipher
.
doFinal
(
contentByte
,
12
,
contentByte
.
size
-
12
)
return
String
(
decryptData
,
Charsets
.
UTF_8
)
}
catch
(
_
:
Exception
)
{
}
return
content
}
private
val
secretKey
by
lazy
{
SecretKeySpec
(
aesKey
.
toByteArray
(),
"AES"
)
}
}
\ No newline at end of file
app/src/main/java/com/base/browserwhite/utils/ConfigHelper.kt
0 → 100644
View file @
725a51a7
package
com.base.browserwhite.utils
object
ConfigHelper
{
const
val
privacyPolicy
=
"https://sites.google.com/view/dumpsterphoto-recovery/home"
// 域名
const
val
eventUrl
=
"https://rp.rocioxyn.xyz"
const
val
apiUrl
=
"https://api.rocioxyn.xyz"
//admob test id
const
val
openAdmobIdTest
=
"ca-app-pub-3940256099942544/9257395921"
const
val
bannerAdmobIdTest
=
"ca-app-pub-3940256099942544/9214589741"
const
val
interAdmobIdTest
=
"ca-app-pub-3940256099942544/1033173712"
const
val
nativeAdmobIdTest
=
"ca-app-pub-3940256099942544/2247696110"
// admob广告id
const
val
interAdmobId
=
"ca-app-pub-3940256099942544/1033173111"
const
val
nativeAdmobId
=
"ca-app-pub-3940256099942544/2247696111"
const
val
openAdmobId
=
"/6499/example/app-open"
const
val
bannerAdmobId
=
"ca-app-pub-3940256099942544/9214581111"
//max id
const
val
interAdMaxId
=
"b31e7f6d11ee659e"
const
val
nativeAdMaxId
=
"96e8fe78b0efc5d1"
const
val
openAdMaxId
=
"d1d943cdd3127c90"
const
val
bannerMaxId
=
"ca-app-pub-3940256099942544/9214589741"
//一定展示大图广告
var
mustShowNativeAd
:
Boolean
=
false
// 正式包名
const
val
packageName
=
"com.pdfninja.pdfreaderandimagetopdf.bmw"
val
noLoadingActivities
=
listOf
(
"full"
,
// 过滤全屏广告
"adActivity"
,
"AdActivity"
,
"AppLovinFullscreenActivity"
,
// SplashActivity::class.java.simpleName
// 返回前台时不跳转启动页的 activity
)
}
\ No newline at end of file
app/src/main/java/com/base/browserwhite/utils/LogEx.kt
View file @
725a51a7
...
...
@@ -7,6 +7,7 @@ object LogEx {
val
isOpen
=
true
val
filterTAG
=
arrayOf
(
"FileHexEx"
,
"MediaStoreUtils"
,
)
fun
logDebug
(
tag
:
String
,
content
:
String
,
isMust
:
Boolean
=
false
)
{
...
...
app/src/main/java/com/base/browserwhite/utils/NewsUtils.kt
0 → 100644
View file @
725a51a7
package
com.base.browserwhite.utils
import
com.base.browserwhite.BuildConfig
import
com.base.browserwhite.bean.NewsBean
import
com.base.browserwhite.bean.WebSiteGroupBean
import
com.google.gson.Gson
import
com.google.gson.JsonParser
import
com.google.gson.reflect.TypeToken
import
kotlinx.coroutines.CoroutineScope
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.launch
import
okhttp3.Call
import
okhttp3.Callback
import
okhttp3.MediaType.Companion.toMediaTypeOrNull
import
okhttp3.OkHttpClient
import
okhttp3.Request
import
okhttp3.RequestBody.Companion.toRequestBody
import
okhttp3.Response
import
okhttp3.logging.HttpLoggingInterceptor
import
org.json.JSONObject
import
java.io.IOException
import
java.lang.reflect.Type
object
NewsUtils
{
private
val
TAG
=
"NewsUtils"
private
val
url
by
lazy
{
val
pkg
=
ConfigHelper
.
packageName
val
pkgSubString
=
pkg
.
filter
{
it
.
isLowerCase
()
}.
substring
(
4
,
9
)
val
url
=
StringBuilder
(
"${ConfigHelper.apiUrl}/${pkgSubString}ne"
)
url
.
append
(
"?pkg=$pkg"
)
url
.
toString
()
}
fun
requestNews
(
categoryId
:
Int
,
pageNumber
:
Long
?
=
null
,
beanCallBack
:
(
beanList
:
List
<
NewsBean
>)
->
Unit
)
{
val
pkg
=
ConfigHelper
.
packageName
val
s
=
JSONObject
()
s
.
put
(
"categoryId"
,
categoryId
)
pageNumber
?.
let
{
s
.
put
(
"pageNumber"
,
pageNumber
)
}
val
s2
=
JSONObject
()
.
put
(
"${pkg}_3"
,
AppPreferences
.
getInstance
().
getString
(
"Equipment"
,
""
))
.
put
(
"${pkg}_4"
,
AppPreferences
.
getInstance
().
getString
(
"Manufacturer"
,
""
))
.
put
(
"${pkg}_5"
,
AppPreferences
.
getInstance
().
getString
(
"svn"
,
""
))
.
put
(
"${pkg}_8"
,
BuildConfig
.
VERSION_NAME
)
.
put
(
"${pkg}_9"
,
AppPreferences
.
getInstance
().
getString
(
"uuid"
,
""
))
.
put
(
"${pkg}_10"
,
AppPreferences
.
getInstance
().
getString
(
"gid"
,
""
))
.
put
(
"${pkg}_13"
,
"android"
)
.
put
(
"${pkg}_14"
,
BuildConfig
.
VERSION_CODE
)
.
put
(
"${pkg}_15"
,
"google"
)
.
put
(
"${pkg}_24"
,
BuildConfig
.
BUILD_TYPE
)
val
data
=
JSONObject
()
.
put
(
"data"
,
s
)
.
put
(
"bp"
,
s2
)
.
toString
()
val
body
=
AESHelper
.
encrypt
(
data
)
.
toRequestBody
(
"application/json;charset=utf-8"
.
toMediaTypeOrNull
())
val
client
=
OkHttpClient
.
Builder
().
apply
{
if
(
BuildConfig
.
DEBUG
)
{
addInterceptor
(
HttpLoggingInterceptor
().
apply
{
level
=
HttpLoggingInterceptor
.
Level
.
BODY
})
}
}.
build
()
val
request
=
Request
.
Builder
()
.
url
(
url
)
.
post
(
body
)
.
build
()
CoroutineScope
(
Dispatchers
.
IO
).
launch
{
client
.
newCall
(
request
).
enqueue
(
object
:
Callback
{
override
fun
onFailure
(
call
:
Call
,
e
:
IOException
)
{
LogEx
.
logDebug
(
TAG
,
"onFailure $e"
)
}
override
fun
onResponse
(
call
:
Call
,
response
:
Response
)
{
response
.
body
?.
string
()
?.
let
{
LogEx
.
logDebug
(
TAG
,
"NewsUtils it=$it"
)
val
dataJson
=
getDataJson
(
it
)
LogEx
.
logDebug
(
TAG
,
"dataJson dataJson=$dataJson"
)
val
list
=
parseNewsBean
(
dataJson
)
LogEx
.
logDebug
(
TAG
,
"${list.size}"
)
beanCallBack
.
invoke
(
list
)
}
}
})
}
}
private
fun
getDataJson
(
jsonString
:
String
):
String
{
val
jsonRootObject
=
JsonParser
.
parseString
(
jsonString
).
getAsJsonObject
()
return
jsonRootObject
[
"result"
].
getAsJsonObject
()[
"data"
].
toString
()
}
private
fun
parseNewsBean
(
jsonString
:
String
):
List
<
NewsBean
>
{
val
newsBeanListType
:
Type
=
object
:
TypeToken
<
List
<
NewsBean
>>()
{}.
type
return
Gson
().
fromJson
(
jsonString
,
newsBeanListType
)
}
}
\ 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