Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
com.ccwangluo.accelerator
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sheteng
com.ccwangluo.accelerator
Commits
b53fd3fa
Commit
b53fd3fa
authored
Mar 30, 2022
by
sheteng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
版本1.0.0
parent
ac0fa240
Changes
19
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
246 additions
and
104 deletions
+246
-104
app/src/main/AndroidManifest.xml
app/src/main/AndroidManifest.xml
+5
-0
app/src/main/java/com/ccwangluo/accelerator/App.kt
app/src/main/java/com/ccwangluo/accelerator/App.kt
+0
-1
app/src/main/java/com/ccwangluo/accelerator/ui/BottomNavigationFragment.kt
.../com/ccwangluo/accelerator/ui/BottomNavigationFragment.kt
+0
-1
app/src/main/java/com/ccwangluo/accelerator/ui/MainActivity.kt
...rc/main/java/com/ccwangluo/accelerator/ui/MainActivity.kt
+1
-8
app/src/main/java/com/ccwangluo/accelerator/ui/dialog/DownloadDialog.kt
...ava/com/ccwangluo/accelerator/ui/dialog/DownloadDialog.kt
+19
-3
app/src/main/java/com/ccwangluo/accelerator/ui/home/NewsFragment.kt
...in/java/com/ccwangluo/accelerator/ui/home/NewsFragment.kt
+2
-3
app/src/main/java/com/ccwangluo/accelerator/ui/home/NewsViewModel.kt
...n/java/com/ccwangluo/accelerator/ui/home/NewsViewModel.kt
+0
-2
app/src/main/java/com/ccwangluo/accelerator/ui/web/AndroidActivityInterface.kt
.../ccwangluo/accelerator/ui/web/AndroidActivityInterface.kt
+0
-2
app/src/main/java/com/ccwangluo/accelerator/ui/web/AndroidInterface.kt
...java/com/ccwangluo/accelerator/ui/web/AndroidInterface.kt
+15
-9
app/src/main/java/com/ccwangluo/accelerator/ui/web/CommonWebViewFragment.kt
...com/ccwangluo/accelerator/ui/web/CommonWebViewFragment.kt
+57
-12
app/src/main/java/com/ccwangluo/accelerator/utils/AcceleratorUtils.kt
.../java/com/ccwangluo/accelerator/utils/AcceleratorUtils.kt
+0
-1
app/src/main/java/com/ccwangluo/accelerator/utils/DownloadUtils.kt
...ain/java/com/ccwangluo/accelerator/utils/DownloadUtils.kt
+85
-0
app/src/main/java/com/ccwangluo/accelerator/utils/SysUtils.kt
...src/main/java/com/ccwangluo/accelerator/utils/SysUtils.kt
+8
-52
app/src/main/res/layout/dialog_premission.xml
app/src/main/res/layout/dialog_premission.xml
+5
-4
app/src/main/res/layout/fragment_webview.xml
app/src/main/res/layout/fragment_webview.xml
+40
-2
app/src/main/res/mipmap-xxhdpi/btn_close.png
app/src/main/res/mipmap-xxhdpi/btn_close.png
+0
-0
app/src/main/res/values/styles.xml
app/src/main/res/values/styles.xml
+2
-3
app/src/main/res/values/themes.xml
app/src/main/res/values/themes.xml
+1
-1
app/src/main/res/xml/filepaths.xml
app/src/main/res/xml/filepaths.xml
+6
-0
No files found.
app/src/main/AndroidManifest.xml
View file @
b53fd3fa
...
...
@@ -24,6 +24,11 @@
<uses-permission
android:name=
"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"
/>
<!-- 用于 log 日志 -->
<uses-permission
android:name=
"android.permission.QUERY_ALL_PACKAGES"
tools:ignore=
"QueryAllPackagesPermission"
/>
<uses-permission
android:name=
"android.permission.RECORD_AUDIO"
tools:node=
"remove"
/>
<!-- <uses-permission android:name="android.permission.READ_SMS" tools:node="remove"/>-->
<uses-permission
android:name=
"android.permission.READ_CALENDAR"
tools:node=
"remove"
/>
<uses-permission
android:name=
"android.permission.READ_CONTACTS"
tools:node=
"remove"
/>
<uses-permission
android:name=
"android.permission.ACCESS_MEDIA_LOCATION"
tools:node=
"remove"
/>
<!-- 配置可查询包名, 配置测试游戏必须添加 添加 -->
<queries>
<package
android:name=
"com.tencent.mm"
/>
...
...
app/src/main/java/com/ccwangluo/accelerator/App.kt
View file @
b53fd3fa
...
...
@@ -5,7 +5,6 @@ import android.content.res.Configuration
import
android.os.Environment
import
androidx.multidex.MultiDex
import
com.ccwangluo.accelerator.ui.MainActivity
import
com.ccwangluo.accelerator.utils.PhoneUtils
import
com.ccwangluo.accelerator.utils.SysUtils
import
com.github.shadowsocks.Core
import
com.hjq.toast.ToastUtils
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/BottomNavigationFragment.kt
View file @
b53fd3fa
...
...
@@ -9,7 +9,6 @@ import com.ccwangluo.accelerator.ui.home.AcceleratorFragment
import
com.ccwangluo.accelerator.ui.home.AccelertorViewModel
import
com.ccwangluo.accelerator.ui.home.MineFragment
import
com.ccwangluo.accelerator.ui.home.NewsFragment
import
com.ccwangluo.accelerator.utils.AcceleratorUtils
import
com.ccwangluo.accelerator.utils.LoginUtils
import
com.ccwangluo.accelerator.utils.datareport.DataRePortUtils
import
com.google.android.material.bottomnavigation.BottomNavigationView
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/MainActivity.kt
View file @
b53fd3fa
...
...
@@ -8,12 +8,9 @@ import android.hardware.Sensor
import
android.hardware.SensorEventListener
import
android.hardware.SensorManager
import
android.os.Bundle
import
android.os.Looper
import
android.util.Log
import
android.view.KeyEvent
import
androidx.appcompat.app.AlertDialog
import
androidx.lifecycle.ViewModelProvider
import
com.ccwangluo.accelerator.R
import
com.ccwangluo.accelerator.receiver.AppDownloadReceiver
import
com.ccwangluo.accelerator.ui.dialog.PermissionDialog
import
com.ccwangluo.accelerator.ui.dialog.PrivacyDialog
...
...
@@ -23,20 +20,15 @@ import com.ccwangluo.accelerator.utils.AcceleratorUtils
import
com.ccwangluo.accelerator.utils.PhoneUtils
import
com.ccwangluo.accelerator.utils.datareport.DataRePortUtils
import
com.ccwangluo.cc_quickly.utils.SettingSPUtils
import
com.github.shadowsocks.bg.AuthManager
import
com.github.shadowsocks.http.HttpConfig
import
com.github.shadowsocks.utils.StartService
import
com.hjq.toast.ToastUtils
import
com.tencent.android.tpush.XGIOperateCallback
import
com.tencent.android.tpush.XGPushManager
import
com.tencent.map.geolocation.TencentLocation
import
com.tencent.map.geolocation.TencentLocationListener
import
com.tencent.map.geolocation.TencentLocationManager
import
com.tencent.tauth.Tencent
import
com.umeng.socialize.UMShareAPI
import
com.xuexiang.xpage.base.XPageActivity
import
com.xuexiang.xpage.core.PageOption
import
com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog
import
com.xuexiang.xutil.system.PermissionUtils
import
fm.jiecao.jcvideoplayer_lib.JCVideoPlayer
...
...
@@ -120,6 +112,7 @@ class MainActivity() : XPageActivity() {
}
}).
request
()
}
private
fun
initPhoneUtils
()
{
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/dialog/DownloadDialog.kt
View file @
b53fd3fa
...
...
@@ -6,6 +6,7 @@ import android.content.DialogInterface
import
android.database.Cursor
import
androidx.fragment.app.FragmentActivity
import
androidx.lifecycle.lifecycleScope
import
com.hjq.toast.ToastUtils
import
com.xuexiang.xui.widget.dialog.materialdialog.GravityEnum
import
com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog
import
kotlinx.coroutines.Dispatchers
...
...
@@ -25,12 +26,17 @@ class DownloadDialog(
.
contentGravity
(
GravityEnum
.
CENTER
)
.
progress
(
false
,
100
,
true
)
.
cancelListener
(
{
})
{
ToastUtils
.
show
(
"下载中"
)
})
.
cancelable
(
false
)
.
negativeText
(
"隐藏"
)
.
onPositive
{
dialog
,
which
->
cancellDownload
()
}
.
positiveText
(
"取消"
)
.
showListener
({})
.
show
()
context
.
lifecycleScope
.
launch
(
Dispatchers
.
IO
)
{
while
(
dialog
.
progressBar
.
progress
<
100
)
{
while
(
dialog
.
progressBar
.
progress
<
100
&&
dialog
.
isShowing
)
{
val
progress
=
getDownloadProgress
()
withContext
(
Dispatchers
.
Main
)
{
dialog
.
setProgress
(
progress
.
toInt
())
...
...
@@ -38,11 +44,21 @@ class DownloadDialog(
delay
(
500
)
}
withContext
(
Dispatchers
.
Main
)
{
if
(
dialog
.
isShowing
)
{
dialog
.
dismiss
()
}
}
}
}
fun
cancellDownload
()
{
try
{
downloadManager
.
remove
(
downloadId
)
}
catch
(
e
:
Exception
)
{
}
}
fun
getDownloadProgress
():
Float
{
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/home/NewsFragment.kt
View file @
b53fd3fa
...
...
@@ -20,10 +20,9 @@ import com.ccwangluo.accelerator.model.Plugin
import
com.ccwangluo.accelerator.ui.news.NewsCollectionAdapter
import
com.ccwangluo.accelerator.ui.web.CommonWebViewFragment
import
com.ccwangluo.accelerator.utils.AcceleratorUtils
import
com.ccwangluo.accelerator.utils.
Login
Utils
import
com.ccwangluo.accelerator.utils.
Download
Utils
import
com.ccwangluo.accelerator.utils.SysUtils
import
com.ccwangluo.accelerator.utils.datareport.DataRePortUtils
import
com.github.shadowsocks.http.HttpConfig
import
com.google.android.material.appbar.AppBarLayout
import
com.google.android.material.tabs.TabLayout
import
com.google.android.material.tabs.TabLayoutMediator
...
...
@@ -141,7 +140,7 @@ class NewsFragment : XPageFragment() {
itemData
.
url
?.
let
{
DataRePortUtils
.
report
(
"st_game_down_clk"
,
mapOf
(
"scene"
to
"3"
))
activity
?.
let
{
it1
->
Sys
Utils
.
downloadFile
(
it1
,
it
)
Download
Utils
.
downloadFile
(
it1
,
it
)
}
}
}
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/home/NewsViewModel.kt
View file @
b53fd3fa
...
...
@@ -8,8 +8,6 @@ import com.ccwangluo.accelerator.utils.SysUtils
import
com.ccwangluo.accelerator.utils.http.HttpGo
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.withContext
import
javax.security.auth.callback.Callback
class
NewsViewModel
:
ViewModel
()
{
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/web/AndroidActivityInterface.kt
View file @
b53fd3fa
package
com.ccwangluo.accelerator.ui.web
import
android.os.Bundle
import
android.webkit.JavascriptInterface
import
com.ccwangluo.accelerator.utils.LoginUtils
import
com.github.shadowsocks.http.HttpConfig
import
com.ccwangluo.cc_quickly.utils.SettingSPUtils
import
com.ccwangluo.cc_quickly.utils.XToastUtils
import
com.just.agentweb.core.AgentWeb
import
com.xuexiang.xutil.app.AppUtils
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/web/AndroidInterface.kt
View file @
b53fd3fa
...
...
@@ -2,9 +2,7 @@ package com.ccwangluo.accelerator.ui.web
import
android.os.Bundle
import
android.webkit.JavascriptInterface
import
com.ccwangluo.accelerator.utils.LoginUtils
import
com.github.shadowsocks.http.HttpConfig
import
com.ccwangluo.cc_quickly.utils.SettingSPUtils
import
com.ccwangluo.cc_quickly.utils.XToastUtils
import
com.just.agentweb.core.AgentWeb
import
com.xuexiang.xpage.base.XPageFragment
...
...
@@ -14,9 +12,7 @@ import android.content.Intent
import
android.net.Uri
import
android.os.Handler
import
android.provider.Settings
import
com.ccwangluo.accelerator.utils.AcceleratorUtils
import
com.ccwangluo.accelerator.utils.ShareUtils
import
com.ccwangluo.accelerator.utils.SysUtils
import
com.ccwangluo.accelerator.utils.*
import
com.ccwangluo.accelerator.utils.datareport.DataRePortUtils
import
com.github.shadowsocks.bg.AuthManager
import
com.github.shadowsocks.bg.BaseService
...
...
@@ -49,11 +45,11 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
}
@JavascriptInterface
fun
openWebview
(
url
:
String
,
noNeedToken
:
Boolean
)
{
fun
openWebview
(
url
:
String
,
showTitle
:
Boolean
)
{
LoginUtils
.
token
?.
let
{
val
params
=
Bundle
()
params
.
putString
(
CommonWebViewFragment
.
WEBVIEW_URL_KEY
,
HttpConfig
.
UI_MAIN_URL
+
url
)
params
.
putBoolean
(
CommonWebViewFragment
.
NOEEDTOKEN
,
noNeedToken
)
params
.
putBoolean
(
CommonWebViewFragment
.
SHOW_TITLE
,
showTitle
)
xPageFragment
.
openPage
(
CommonWebViewFragment
::
class
.
java
,
params
)
}
?:
let
{
xPageFragment
.
context
?.
let
{
it1
->
...
...
@@ -77,14 +73,16 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
xPageFragment
.
context
?.
startActivity
(
intent
)
}
/**
* 跳转协议
*/
@JavascriptInterface
fun
openWebviewByWholeUrl
(
url
:
String
)
{
fun
openWebviewByWholeUrl
(
url
:
String
,
showTitle
:
Boolean
)
{
val
params
=
Bundle
()
if
(
url
.
startsWith
(
"http:"
)
||
url
.
startsWith
(
"https:"
))
{
params
.
putString
(
CommonWebViewFragment
.
WEBVIEW_URL_KEY
,
url
)
params
.
putBoolean
(
CommonWebViewFragment
.
SHOW_TITLE
,
showTitle
)
}
else
{
params
.
putString
(
CommonWebViewFragment
.
WEBVIEW_URL_KEY
,
...
...
@@ -94,6 +92,14 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
xPageFragment
.
openPage
(
CommonWebViewFragment
::
class
.
java
,
params
)
}
/**
* 跳转协议
*/
@JavascriptInterface
fun
openWebviewByWholeUrl
(
url
:
String
)
{
openWebviewByWholeUrl
(
url
,
false
)
}
//打开系统设置
@JavascriptInterface
fun
openSysSetting
()
{
...
...
@@ -361,7 +367,7 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
@JavascriptInterface
fun
downloadFile
(
url
:
String
)
{
xPageFragment
.
activity
?.
let
{
Sys
Utils
.
downloadFile
(
it
,
url
)
Download
Utils
.
downloadFile
(
it
,
url
)
}
}
...
...
app/src/main/java/com/ccwangluo/accelerator/ui/web/CommonWebViewFragment.kt
View file @
b53fd3fa
package
com.ccwangluo.accelerator.ui.web
import
android.graphics.Bitmap
import
android.graphics.Color
import
android.
util.Log
import
android.
text.TextUtils
import
android.view.KeyEvent
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
android.webkit.WebChromeClient
import
android.webkit.WebView
import
android.webkit.WebViewClient
import
android.widget.FrameLayout
import
androidx.fragment.app.Fragment
import
com.ccwangluo.accelerator.databinding.FragmentWebviewBinding
...
...
@@ -33,13 +37,25 @@ class CommonWebViewFragment : XPageFragment() {
return
binding
.
root
}
private
var
show_title
=
false
override
fun
initViews
()
{
val
url
=
arguments
?.
getString
(
WEBVIEW_URL_KEY
)
val
noNeedToken
=
arguments
?.
getBoolean
(
NOEEDTOKEN
)
?:
false
show_title
=
arguments
?.
getBoolean
(
SHOW_TITLE
)
?:
false
if
(
show_title
)
{
binding
.
webBar
.
visibility
=
View
.
VISIBLE
}
binding
.
webBack
.
setOnClickListener
{
if
(
agentWeb
?.
back
()
==
false
||
binding
.
webTitle
.
text
.
contains
(
"订单"
))
{
popToBack
()
}
}
binding
.
webClose
.
setOnClickListener
{
popToBack
()
}
agentWeb
=
url
?.
let
{
var
weburl
=
it
if
(!
noNeedToken
)
{
if
(
weburl
.
contains
(
"?"
))
{
weburl
=
weburl
+
"&channel=${SysUtils.getChannel()}"
}
else
{
...
...
@@ -48,7 +64,6 @@ class CommonWebViewFragment : XPageFragment() {
LoginUtils
.
token
?.
let
{
weburl
=
weburl
+
"&token=${it}"
}
}
createAgentWeb
(
this
,
binding
.
commonWebview
,
weburl
)
}
agentWeb
?.
getJsInterfaceHolder
()
...
...
@@ -67,12 +82,42 @@ class CommonWebViewFragment : XPageFragment() {
)
)
.
useDefaultIndicator
(
Color
.
parseColor
(
"#3CA4FD"
),
3
)
.
setWebChromeClient
(
mWebChromeClient
)
.
setWebViewClient
(
mWebViewClient
)
.
setOpenOtherPageWays
(
DefaultWebClient
.
OpenOtherPageWays
.
ASK
)
.
createAgentWeb
()
.
ready
()
.
go
(
url
)
}
val
mWebViewClient
:
WebViewClient
=
object
:
WebViewClient
()
{
override
fun
onPageStarted
(
view
:
WebView
?,
url
:
String
?,
favicon
:
Bitmap
?)
{
println
(
"webview "
+
url
)
}
}
val
mWebChromeClient
:
WebChromeClient
=
object
:
WebChromeClient
()
{
override
fun
onProgressChanged
(
view
:
WebView
?,
newProgress
:
Int
)
{
//do you work
println
(
"webview process"
+
newProgress
)
}
override
fun
onReceivedTitle
(
view
:
WebView
?,
title
:
String
)
{
var
title
=
title
super
.
onReceivedTitle
(
view
,
title
)
if
(
show_title
&&
!
TextUtils
.
isEmpty
(
title
))
{
if
(
title
.
length
>
10
)
{
title
=
title
.
substring
(
0
,
10
)
+
"..."
}
}
binding
.
webTitle
.
setText
(
title
)
if
(
agentWeb
?.
webCreator
?.
webView
?.
canGoBack
()
==
true
)
{
binding
.
webClose
.
visibility
=
View
.
VISIBLE
}
else
{
binding
.
webClose
.
visibility
=
View
.
GONE
}
}
}
override
fun
initListeners
()
{
}
...
...
@@ -136,6 +181,6 @@ class CommonWebViewFragment : XPageFragment() {
companion
object
{
val
WEBVIEW_URL_KEY
=
"WEBVIEW_URL_KEY"
val
NOEEDTOKEN
=
"NOEEDTOKEN
"
val
SHOW_TITLE
=
"SHOW_TITLE
"
}
}
\ No newline at end of file
app/src/main/java/com/ccwangluo/accelerator/utils/AcceleratorUtils.kt
View file @
b53fd3fa
...
...
@@ -37,7 +37,6 @@ import kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.delay
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.withContext
import
timber.log.Timber
import
kotlin.math.roundToInt
...
...
app/src/main/java/com/ccwangluo/accelerator/utils/DownloadUtils.kt
0 → 100644
View file @
b53fd3fa
package
com.ccwangluo.accelerator.utils
import
android.Manifest
import
android.app.DownloadManager
import
android.content.Context
import
android.content.Intent
import
android.net.Uri
import
android.os.Build
import
android.os.Environment
import
androidx.core.content.FileProvider
import
androidx.fragment.app.FragmentActivity
import
com.ccwangluo.accelerator.ui.dialog.DownloadDialog
import
com.hjq.toast.ToastUtils
import
com.xuexiang.xutil.system.PermissionUtils
import
java.io.File
object
DownloadUtils
{
fun
downloadFile
(
activity
:
FragmentActivity
,
url
:
String
)
{
if
(!
PermissionUtils
.
isGranted
(
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
))
{
ToastUtils
.
show
(
"下载需要打开存储权限"
)
PermissionUtils
.
permission
(
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
.
toString
())
.
rationale
({
PermissionUtils
.
openAppSettings
()
}).
request
()
return
}
var
filename
=
url
.
split
(
"/"
).
last
()
val
file
=
File
(
Environment
.
getExternalStorageDirectory
().
absolutePath
+
"/${Environment.DIRECTORY_DOWNLOADS}"
,
filename
)
if
(
file
.
exists
())
{
installApp
(
activity
,
file
)
return
}
val
downloadManager
=
activity
.
getSystemService
(
Context
.
DOWNLOAD_SERVICE
)
as
DownloadManager
val
request
=
DownloadManager
.
Request
(
Uri
.
parse
(
url
))
//添加下载文件的网络路径
request
.
setDestinationInExternalPublicDir
(
Environment
.
DIRECTORY_DOWNLOADS
,
filename
)
//添加保存文件路径与名称
request
.
setTitle
(
"下载中"
)
//添加在通知栏里显示的标题
// request.setDescription("下载中") //添加在通知栏里显示的描述
request
.
setAllowedNetworkTypes
(
DownloadManager
.
Request
.
NETWORK_MOBILE
or
DownloadManager
.
Request
.
NETWORK_WIFI
)
//设置下载的网络类型
request
.
setVisibleInDownloadsUi
(
false
)
//是否显示下载 从Android Q开始会被忽略
request
.
setNotificationVisibility
(
DownloadManager
.
Request
.
VISIBILITY_VISIBLE_NOTIFY_COMPLETED
)
//下载中与下载完成后都会在通知中显示| 另外可以选 DownloadManager.Request.VISIBILITY_VISIBLE 仅在下载中时显示在通知中,完成后会自动隐藏
val
id
=
downloadManager
.
enqueue
(
request
)
//加入队列,会返回一个唯一下载id
DownloadDialog
(
activity
,
downloadManager
,
id
).
show
()
}
fun
installApp
(
context
:
Context
,
apkFile
:
File
)
{
try
{
val
intent
=
Intent
(
Intent
.
ACTION_VIEW
)
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
N
)
{
intent
.
flags
=
Intent
.
FLAG_GRANT_READ_URI_PERMISSION
val
contentUri
:
Uri
=
FileProvider
.
getUriForFile
(
context
,
"com.ccwangluo.accelerator.fileprovider"
,
apkFile
)
//authorities就是provider里声明的authorities
intent
.
setDataAndType
(
contentUri
,
"application/vnd.android.package-archive"
)
}
else
{
intent
.
setDataAndType
(
Uri
.
fromFile
(
apkFile
),
"application/vnd.android.package-archive"
)
intent
.
flags
=
Intent
.
FLAG_ACTIVITY_NEW_TASK
}
context
.
startActivity
(
intent
)
}
catch
(
e
:
Exception
)
{
}
}
}
\ No newline at end of file
app/src/main/java/com/ccwangluo/accelerator/utils/SysUtils.kt
View file @
b53fd3fa
...
...
@@ -5,7 +5,6 @@ import android.app.DownloadManager
import
android.content.Context
import
android.content.Context.DOWNLOAD_SERVICE
import
android.content.Intent
import
android.content.pm.PackageInfo
import
android.net.ConnectivityManager
import
android.net.NetworkCapabilities
import
android.net.Uri
...
...
@@ -13,13 +12,12 @@ import android.os.Build
import
android.os.Environment
import
android.text.TextUtils
import
android.util.DisplayMetrics
import
androidx.core.content.FileProvider
import
androidx.fragment.app.FragmentActivity
import
com.ccwangluo.accelerator.ui.dialog.DownloadDialog
import
com.ccwangluo.cc_quickly.utils.SettingSPUtils
import
com.ccwangluo.cc_quickly.utils.XToastUtils
import
com.hjq.toast.ToastUtils
import
com.mcxiaoke.packer.helper.PackerNg
import
com.sdk.base.framework.bean.PInfo
import
com.tencent.mmkv.MMKV
import
com.xuexiang.xpage.base.XPageActivity
import
com.xuexiang.xpage.base.XPageFragment
...
...
@@ -27,7 +25,7 @@ import com.xuexiang.xutil.app.AppUtils
import
com.xuexiang.xutil.net.NetworkUtils
import
com.xuexiang.xutil.system.DeviceUtils
import
com.xuexiang.xutil.system.PermissionUtils
import
java.
security.Permission
import
java.
io.File
import
java.text.SimpleDateFormat
import
java.util.*
...
...
@@ -70,7 +68,12 @@ object SysUtils {
* 判断包是否安装
*/
fun
isPackageInstall
(
context
:
Context
,
packageName
:
String
):
Boolean
{
return
AppUtils
.
isInstallApp
(
packageName
)
try
{
return
context
.
getPackageManager
().
getPackageInfo
(
packageName
,
0
)
!=
null
}
catch
(
e
:
Exception
)
{
}
return
false
}
fun
getnetQuality
(
delay
:
Int
):
String
{
...
...
@@ -134,38 +137,6 @@ object SysUtils {
}
fun
downloadFile
(
activity
:
FragmentActivity
,
url
:
String
)
{
if
(!
PermissionUtils
.
isGranted
(
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
))
{
ToastUtils
.
show
(
"下载需要打开存储权限"
)
PermissionUtils
.
permission
(
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
.
toString
()).
rationale
({
PermissionUtils
.
openAppSettings
()
}).
request
()
return
}
val
downloadManager
=
activity
.
getSystemService
(
DOWNLOAD_SERVICE
)
as
DownloadManager
val
request
=
DownloadManager
.
Request
(
Uri
.
parse
(
url
))
//添加下载文件的网络路径
var
filename
=
url
.
split
(
"/"
).
last
()
ToastUtils
.
show
(
"开始下载"
)
request
.
setDestinationInExternalPublicDir
(
Environment
.
DIRECTORY_DOWNLOADS
,
filename
)
//添加保存文件路径与名称
request
.
setTitle
(
"下载中"
)
//添加在通知栏里显示的标题
// request.setDescription("下载中") //添加在通知栏里显示的描述
request
.
setAllowedNetworkTypes
(
DownloadManager
.
Request
.
NETWORK_MOBILE
or
DownloadManager
.
Request
.
NETWORK_WIFI
)
//设置下载的网络类型
request
.
setVisibleInDownloadsUi
(
false
)
//是否显示下载 从Android Q开始会被忽略
request
.
setNotificationVisibility
(
DownloadManager
.
Request
.
VISIBILITY_VISIBLE_NOTIFY_COMPLETED
)
//下载中与下载完成后都会在通知中显示| 另外可以选 DownloadManager.Request.VISIBILITY_VISIBLE 仅在下载中时显示在通知中,完成后会自动隐藏
val
id
=
downloadManager
.
enqueue
(
request
)
//加入队列,会返回一个唯一下载id
DownloadDialog
(
activity
,
downloadManager
,
id
).
show
()
}
fun
joinQQGroup
(
context
:
Context
)
{
val
key
=
"5CmyFzMWyucgmmLTM7JLG_sSArmaFQxT"
...
...
@@ -224,19 +195,4 @@ object SysUtils {
return
MMKV
.
defaultMMKV
().
decodeString
(
"device_uuid"
,
null
)
}
fun
getInstalledApps
(
context
:
Context
,
packageName
:
String
):
Int
{
val
packs
:
List
<
PackageInfo
>
=
context
.
getPackageManager
().
getInstalledPackages
(
0
)
for
(
i
in
packs
.
indices
)
{
val
p
=
packs
[
i
]
if
(
p
.
versionName
==
null
)
{
continue
}
if
(
packageName
.
equals
(
p
.
packageName
))
{
return
p
.
versionCode
}
}
return
-
1
}
}
\ No newline at end of file
app/src/main/res/layout/dialog_premission.xml
View file @
b53fd3fa
...
...
@@ -73,12 +73,13 @@
<TextView
android:gravity=
"center"
android:id=
"@+id/premission_know"
android:layout_width=
"
wrap_cont
ent"
android:layout_height=
"
wrap_cont
ent"
android:layout_width=
"
match_par
ent"
android:layout_height=
"
match_par
ent"
android:layout_gravity=
"center"
android:
layout_margin
Top=
"15dp"
android:
layout_margin
Bottom=
"20dp"
android:
padding
Top=
"15dp"
android:
padding
Bottom=
"20dp"
android:text=
"我知道了"
android:textColor=
"#FF3CA4FD"
android:textSize=
"15sp"
/>
...
...
app/src/main/res/layout/fragment_webview.xml
View file @
b53fd3fa
...
...
@@ -3,12 +3,50 @@
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"#FFFFFF"
android:paddingTop=
"30dp"
android:orientation=
"vertical"
>
<LinearLayout
android:id=
"@+id/web_bar"
android:visibility=
"gone"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"20dp"
android:layout_marginTop=
"5dp"
android:layout_marginBottom=
"5dp"
android:layout_marginRight=
"20dp"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<ImageView
android:id=
"@+id/web_back"
android:layout_width=
"17dp"
android:layout_height=
"17dp"
android:src=
"@drawable/back_icon"
/>
<ImageView
android:visibility=
"gone"
android:id=
"@+id/web_close"
android:layout_width=
"17dp"
android:layout_height=
"17dp"
android:layout_marginLeft=
"20dp"
android:src=
"@mipmap/btn_close"
/>
<TextView
android:id=
"@+id/web_title"
android:layout_marginLeft=
"20dp"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:maxLength=
"15"
android:maxLines=
"1"
/>
</LinearLayout>
<FrameLayout
android:layout_marginTop=
"30dp"
android:id=
"@+id/common_webview"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
android:layout_height=
"match_parent"
/>
</LinearLayout>
\ No newline at end of file
app/src/main/res/mipmap-xxhdpi/btn_close.png
0 → 100644
View file @
b53fd3fa
365 Bytes
app/src/main/res/values/styles.xml
View file @
b53fd3fa
...
...
@@ -7,8 +7,6 @@
<item
name=
"android:windowIsTranslucent"
>
false
</item>
<item
name=
"android:windowNoTitle"
>
true
</item>
<!--隐藏标题栏-->
<item
name=
"android:background"
>
@color/white
</item>
<item
name=
"android:textColor"
>
@color/black
</item>
<item
name=
"colorPrimary"
>
@color/black
</item>
<item
name=
"buttonBarButtonStyle"
>
@style/ButtonStyle
</item>
<item
name=
"android:textColorPrimary"
>
@color/black
</item>
<item
name=
"android:windowBackground"
>
#00000000
</item>
<!--这儿也很重要啊,我这儿用了一张透明的.9.png的图,当然用#00000000也是可以的,否则的话这儿出来后有一个黑色的背景-->
...
...
@@ -19,7 +17,8 @@
<item
name=
"android:layout_width"
>
?attr/xui_btn_view_width
</item>
<item
name=
"android:layout_height"
>
?attr/xui_btn_view_height
</item>
<item
name=
"android:textSize"
>
?attr/xui_btn_view_text_size
</item>
<item
name=
"android:textColor"
>
@color/black
</item>
<item
name=
"android:textColor"
>
@color/colorPrimaryDark
</item>
<item
name=
"android:textColorPrimary"
>
@color/colorPrimaryDark
</item>
<item
name=
"android:gravity"
>
center
</item>
<item
name=
"android:background"
>
@color/white
</item>
</style>
...
...
app/src/main/res/values/themes.xml
View file @
b53fd3fa
...
...
@@ -21,7 +21,7 @@
<!-- 自定义自己的主题样式 -->
<item
name=
"colorPrimary"
>
@color/colorPrimary
</item>
<item
name=
"colorPrimaryDark"
>
@color/colorPrimary
</item>
<item
name=
"colorAccent"
>
@color/
blac
k
</item>
<item
name=
"colorAccent"
>
@color/
colorPrimaryDar
k
</item>
<item
name=
"android:windowTranslucentStatus"
>
true
</item>
<item
name=
"android:windowTranslucentNavigation"
>
false
</item>
<!-- <item name="android:background">@mipmap/splash</item>-->
...
...
app/src/main/res/xml/filepaths.xml
View file @
b53fd3fa
...
...
@@ -5,4 +5,10 @@
<root-path
name=
"opensdk_root"
path=
""
/>
<external-files-path
name=
"opensdk_external"
path=
"Images/tmp"
/>
<external-path
name=
"external_storage_root"
path=
"."
/>
<external-path
name=
"external"
path=
"./Download"
/>
<files-path
name=
"files"
path=
"."
/>
</paths>
\ 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