├── .gitignore
├── .idea
├── .gitignore
├── codeStyles
│ ├── Project.xml
│ └── codeStyleConfig.xml
├── compiler.xml
├── gradle.xml
├── jarRepositories.xml
├── misc.xml
└── vcs.xml
├── README.md
├── app
├── .gitignore
├── .idea
│ ├── .gitignore
│ ├── gradle.xml
│ ├── misc.xml
│ └── modules.xml
├── build.gradle
├── libs
│ ├── alipaySdk-15.7.5.aar
│ ├── m3u8download.jar
│ └── open_sdk_3.5.2.152_r9e04b1c_lite.jar
├── local.properties
├── proguard-rules.pro
├── release
│ ├── app-release.apk
│ └── output-metadata.json
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── srcbox
│ │ └── file
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ ├── assets
│ │ ├── font
│ │ │ └── iconfont.ttf
│ │ ├── html
│ │ │ ├── privacyXy.html
│ │ │ └── userXy.html
│ │ ├── img
│ │ │ ├── home
│ │ │ │ ├── code.png
│ │ │ │ ├── else.png
│ │ │ │ ├── happ.png
│ │ │ │ ├── happy.png
│ │ │ │ ├── play.png
│ │ │ │ ├── util.png
│ │ │ │ ├── util
│ │ │ │ │ ├── cloud.png
│ │ │ │ │ ├── list.png
│ │ │ │ │ └── member.png
│ │ │ │ ├── video.png
│ │ │ │ ├── 云端.png
│ │ │ │ ├── 列表.png
│ │ │ │ └── 资产.png
│ │ │ └── scann.png
│ │ ├── json
│ │ │ ├── apptypes.json
│ │ │ ├── content_type.json
│ │ │ ├── extTable
│ │ │ │ ├── ext1.4.json
│ │ │ │ ├── extExtractMsg.json
│ │ │ │ ├── extHead.json
│ │ │ │ └── relativeExtMsg.json
│ │ │ ├── file_lobby_lately_fun.json
│ │ │ ├── file_lobby_music_fun.json
│ │ │ ├── file_lobby_picture_fun.json
│ │ │ ├── file_lobby_video_fun.json
│ │ │ ├── main_home_fun.json
│ │ │ ├── main_home_util_fun.json
│ │ │ ├── themes.json
│ │ │ └── worldTab.json
│ │ └── setting.json
│ ├── ic_launcher-playstore.png
│ ├── java
│ │ └── com
│ │ │ └── srcbox
│ │ │ └── file
│ │ │ ├── adapter
│ │ │ ├── AppFunSelect.kt
│ │ │ ├── AppListAdapter.kt
│ │ │ ├── AppTypesAdapter.kt
│ │ │ ├── ChangeThemeItem.kt
│ │ │ ├── ExtractAdapter.kt
│ │ │ ├── GuidePager.kt
│ │ │ ├── HomeUtilAdapter.kt
│ │ │ ├── ImageSelectAdapter.kt
│ │ │ ├── MainHomeFunAdapter.kt
│ │ │ ├── MainPager.kt
│ │ │ ├── MeData.kt
│ │ │ ├── MusicDownloadAdapter.kt
│ │ │ ├── PopupSelectFileAdapter.kt
│ │ │ └── WebResourceBoxAdapter.kt
│ │ │ ├── application
│ │ │ └── EggApplication.kt
│ │ │ ├── base
│ │ │ └── BaseContract.kt
│ │ │ ├── contract
│ │ │ ├── AppListContract.kt
│ │ │ ├── ContractShitSmooth.kt
│ │ │ └── MainContract.kt
│ │ │ ├── data
│ │ │ ├── AppFunSelectData.kt
│ │ │ ├── AppStorageData.kt
│ │ │ ├── ExtractData.kt
│ │ │ ├── MusicData.kt
│ │ │ ├── PayMessage.kt
│ │ │ ├── ResourceData.kt
│ │ │ ├── ShowIconData.kt
│ │ │ ├── TypeFrameData.kt
│ │ │ ├── UserAppData.kt
│ │ │ ├── UserTogetherData.kt
│ │ │ └── object
│ │ │ │ ├── AppSetting.kt
│ │ │ │ ├── AppTypes.kt
│ │ │ │ ├── CapData.kt
│ │ │ │ ├── CapturedImageConfig.kt
│ │ │ │ └── ScreenCaptureInfo.kt
│ │ │ ├── logic
│ │ │ ├── data
│ │ │ │ └── MountUserData.kt
│ │ │ ├── network
│ │ │ │ └── UserService.kt
│ │ │ └── object
│ │ │ │ ├── MountUser.kt
│ │ │ │ └── ServiceCreator.kt
│ │ │ ├── model
│ │ │ ├── AppListModel.kt
│ │ │ ├── MainModel.kt
│ │ │ └── ShitSmoothModel.kt
│ │ │ ├── payutil
│ │ │ ├── Base64.java
│ │ │ ├── OrderInfoUtil2_0.java
│ │ │ ├── PayConfig.kt
│ │ │ ├── PayResult.java
│ │ │ └── SignUtils.java
│ │ │ ├── presenter
│ │ │ ├── AppListPresenter.kt
│ │ │ ├── MainPresenter.kt
│ │ │ └── ShitSmoothPresenter.kt
│ │ │ ├── receiver
│ │ │ └── PackageReceiver.kt
│ │ │ ├── service
│ │ │ ├── CapturedImagesServer.kt
│ │ │ └── ShadeService.kt
│ │ │ ├── ui
│ │ │ ├── AboutActivity.kt
│ │ │ ├── AppFunActivity.kt
│ │ │ ├── AppList.kt
│ │ │ ├── DiyFileTemplateActivity.kt
│ │ │ ├── ErrorCrash.kt
│ │ │ ├── ExtractManager.kt
│ │ │ ├── FloatWin.kt
│ │ │ ├── GetMemberActivity.kt
│ │ │ ├── ImageSelectActivity.kt
│ │ │ ├── MainActivity.kt
│ │ │ ├── PlayVideoActivity.kt
│ │ │ ├── PointFileExtract.kt
│ │ │ ├── SettingActivity.kt
│ │ │ ├── ShadeActivity.kt
│ │ │ ├── WelcomeActivity.kt
│ │ │ ├── apps
│ │ │ │ ├── activity
│ │ │ │ │ └── AppsActivity.kt
│ │ │ │ └── code
│ │ │ │ │ └── LoadApps.kt
│ │ │ ├── extractManager
│ │ │ │ ├── activity
│ │ │ │ │ └── ExtractManagerActivity.kt
│ │ │ │ └── code
│ │ │ │ │ ├── ExtractCacheManager.kt
│ │ │ │ │ ├── ExtractInstance.kt
│ │ │ │ │ ├── ExtractListener.kt
│ │ │ │ │ ├── ExtractManager.kt
│ │ │ │ │ ├── ExtractResourceDir.kt
│ │ │ │ │ ├── ExtractResourceFormApp.kt
│ │ │ │ │ ├── ExtractTaskMessage.kt
│ │ │ │ │ └── adapter
│ │ │ │ │ └── ExtractItem.kt
│ │ │ ├── fragment
│ │ │ │ └── main_pager
│ │ │ │ │ ├── FragmentFileLobby.kt
│ │ │ │ │ ├── FragmentHome.kt
│ │ │ │ │ ├── FragmentMe.kt
│ │ │ │ │ ├── GuideA.kt
│ │ │ │ │ ├── GuideB.kt
│ │ │ │ │ ├── GuideC.kt
│ │ │ │ │ └── GuideD.kt
│ │ │ ├── login
│ │ │ │ └── LoginActivity.kt
│ │ │ ├── popup
│ │ │ │ ├── AppListPopup.kt
│ │ │ │ ├── AppMessagePopup.kt
│ │ │ │ ├── Bv2AvPopup.kt
│ │ │ │ ├── ChangeThemePopup.kt
│ │ │ │ ├── CompressImagePopup.kt
│ │ │ │ ├── ExtractSrcPopup.kt
│ │ │ │ ├── MediaParserPopup.kt
│ │ │ │ ├── ParseDouYinMusicPopup.kt
│ │ │ │ ├── ParseDouYinPopup.kt
│ │ │ │ ├── ParseKuaiShouPopup.kt
│ │ │ │ ├── PlayWebVideoPopup.kt
│ │ │ │ ├── PublicContent.kt
│ │ │ │ ├── SelectAllOrPartPopup.kt
│ │ │ │ ├── SelectDownOrShowPopup.kt
│ │ │ │ ├── SelectFilePopup.kt
│ │ │ │ ├── ShowIconPopup.kt
│ │ │ │ ├── SignAProtocolPopup.kt
│ │ │ │ ├── SponsorPopup.kt
│ │ │ │ ├── TopUpRechargePopup.kt
│ │ │ │ ├── UpdateAppPopup.kt
│ │ │ │ ├── WebResourceBoxPopup.kt
│ │ │ │ ├── WebSourceGetPopup.kt
│ │ │ │ └── WebToFileZipPopup.kt
│ │ │ ├── screen
│ │ │ │ ├── ScreenAccessibility.kt
│ │ │ │ ├── ScreenEmptyFragment.kt
│ │ │ │ ├── ScreenServices.kt
│ │ │ │ ├── Screenshot.kt
│ │ │ │ ├── data
│ │ │ │ │ └── ScreenNode.kt
│ │ │ │ └── popup
│ │ │ │ │ └── ScreenPopup.kt
│ │ │ ├── searchimginfo
│ │ │ │ ├── SearchImgInfoActivity.kt
│ │ │ │ ├── SearchImgInfoListAdapter.kt
│ │ │ │ └── data
│ │ │ │ │ ├── ContentColumnData.kt
│ │ │ │ │ └── ImgInfoData.kt
│ │ │ ├── userinfo
│ │ │ │ ├── UserInfoActivity.kt
│ │ │ │ └── UserInfoEmailPopup.kt
│ │ │ └── util
│ │ │ │ ├── BlindWork.kt
│ │ │ │ ├── Bv2AvActivity.kt
│ │ │ │ ├── CanSpeak.kt
│ │ │ │ ├── DouYinImagesActivity.kt
│ │ │ │ ├── FindWordActivity.kt
│ │ │ │ ├── GetWebResource.kt
│ │ │ │ ├── HexToBinaryActivity.kt
│ │ │ │ ├── LockScreenActivity.kt
│ │ │ │ ├── MusicDownloadActivity.kt
│ │ │ │ ├── ResourceExtractActivity.kt
│ │ │ │ ├── ShitSmooth.kt
│ │ │ │ ├── WallPaper.kt
│ │ │ │ ├── cartoonFormPicture
│ │ │ │ ├── CartoonFormPictureActivity.kt
│ │ │ │ ├── adapter
│ │ │ │ │ └── CartoonAdapter.kt
│ │ │ │ └── data
│ │ │ │ │ ├── CartoonData.kt
│ │ │ │ │ └── DocData.kt
│ │ │ │ └── similarsites
│ │ │ │ ├── SimilarSites.kt
│ │ │ │ └── SimilarSitesActivity.kt
│ │ │ ├── util
│ │ │ ├── EggIO.kt
│ │ │ ├── EggUtil.kt
│ │ │ ├── EmailAutoTokenizer.kt
│ │ │ ├── GetResourceFormFile.kt
│ │ │ ├── GetSrcFormDir.kt
│ │ │ ├── GetZipFile.kt
│ │ │ ├── GlobUtil.kt
│ │ │ ├── LeanQQUtil.kt
│ │ │ ├── LoadAppList.kt
│ │ │ ├── MediaParse.kt
│ │ │ ├── Member.kt
│ │ │ ├── ParseDouyinMusic.kt
│ │ │ ├── ParseDouyinWateMark.kt
│ │ │ ├── ParseKuaiSou.kt
│ │ │ ├── ParseUrlUtil.kt
│ │ │ ├── ResourceFile.kt
│ │ │ ├── ScreenCaptureUtil.kt
│ │ │ ├── SpTool.kt
│ │ │ ├── ToastUtil.kt
│ │ │ ├── WebAllPageSource.kt
│ │ │ ├── WebAllPageSourceX.kt
│ │ │ ├── WebToFile.kt
│ │ │ ├── WordUtil.kt
│ │ │ └── resource
│ │ │ │ └── extract
│ │ │ │ ├── ExtTable.kt
│ │ │ │ ├── ResourceData.kt
│ │ │ │ ├── ResourceExtractManager.kt
│ │ │ │ └── ResourceExtractTask.kt
│ │ │ └── view
│ │ │ └── StokeRect.kt
│ ├── jniLibs
│ │ ├── arm64-v8a
│ │ │ └── libleancloud-core.so
│ │ ├── armeabi-v7a
│ │ │ └── libleancloud-core.so
│ │ ├── armeabi
│ │ │ └── libleancloud-core.so
│ │ ├── mips
│ │ │ └── libleancloud-core.so
│ │ ├── mips64
│ │ │ └── libleancloud-core.so
│ │ ├── x86
│ │ │ └── libleancloud-core.so
│ │ └── x86_64
│ │ │ └── libleancloud-core.so
│ └── res
│ │ ├── anim
│ │ ├── slide_left_in.xml
│ │ ├── slide_left_out.xml
│ │ ├── slide_right_in.xml
│ │ └── slide_right_out.xml
│ │ ├── color
│ │ └── fabbg.xml
│ │ ├── drawable-v24
│ │ └── ic_launcher_foreground.xml
│ │ ├── drawable
│ │ ├── acfun.png
│ │ ├── baidu.png
│ │ ├── bilibili.png
│ │ ├── circle_black_bg.xml
│ │ ├── circle_white_bg.xml
│ │ ├── eggs.png
│ │ ├── file.png
│ │ ├── html.png
│ │ ├── ic_launcher_background.xml
│ │ ├── image.png
│ │ ├── more.png
│ │ ├── music.png
│ │ ├── no_data_cahua.png
│ │ ├── paste.png
│ │ ├── qq.png
│ │ ├── resource_chahua.png
│ │ ├── search_add.png
│ │ ├── similar_logo.png
│ │ ├── tencentvideo.png
│ │ ├── text.png
│ │ ├── video.png
│ │ ├── vip.png
│ │ └── wave.png
│ │ ├── layout
│ │ ├── about.xml
│ │ ├── activity_apps.xml
│ │ ├── activity_cartoon_form_picture.xml
│ │ ├── activity_diy_file_template.xml
│ │ ├── activity_find_word.xml
│ │ ├── activity_get_member.xml
│ │ ├── activity_hex_to_binary.xml
│ │ ├── activity_lock_screen.xml
│ │ ├── activity_login.xml
│ │ ├── activity_main.xml
│ │ ├── activity_play_video.xml
│ │ ├── activity_point_file_extract.xml
│ │ ├── activity_resource_extract.xml
│ │ ├── activity_search_img_info.xml
│ │ ├── activity_similar_sites.xml
│ │ ├── activity_user_info.xml
│ │ ├── activity_welcome.xml
│ │ ├── app_fun.xml
│ │ ├── app_fun_select_recycler_item.xml
│ │ ├── app_list.xml
│ │ ├── app_list_item.xml
│ │ ├── app_message_popup.xml
│ │ ├── bottom_sheet_dilog.xml
│ │ ├── bv_av_popup.xml
│ │ ├── can_speak.xml
│ │ ├── cartoon_doc.xml
│ │ ├── change_theme_item.xml
│ │ ├── change_theme_popup.xml
│ │ ├── compress_popup.xml
│ │ ├── custom_popup.xml
│ │ ├── error_activity.xml
│ │ ├── extract_activity.xml
│ │ ├── extract_item.xml
│ │ ├── extract_item_x.xml
│ │ ├── extract_manager.xml
│ │ ├── float_win.xml
│ │ ├── fragment_file_lobby.xml
│ │ ├── fragment_home.xml
│ │ ├── fragment_me.xml
│ │ ├── get_web_float_win.xml
│ │ ├── getwebresource_activity.xml
│ │ ├── guide_page_a.xml
│ │ ├── guide_page_b.xml
│ │ ├── guide_page_c.xml
│ │ ├── guide_page_d.xml
│ │ ├── home_listv_item.xml
│ │ ├── home_util_item.xml
│ │ ├── image_select.xml
│ │ ├── image_select_item.xml
│ │ ├── item_search_img.xml
│ │ ├── item_web_resource_box.xml
│ │ ├── me_data_item.xml
│ │ ├── music_download_activity.xml
│ │ ├── music_download_item.xml
│ │ ├── parse_dou_yin_music_popup.xml
│ │ ├── parse_dou_yin_popup.xml
│ │ ├── parse_kuai_shou_popup.xml
│ │ ├── play_web_video.xml
│ │ ├── popup_media_parser.xml
│ │ ├── popup_mp4_to_mp3.xml
│ │ ├── popup_screen_show.xml
│ │ ├── popup_select_down_or_show.xml
│ │ ├── popup_select_file.xml
│ │ ├── popup_select_file_item.xml
│ │ ├── popup_sign_a_protocol.xml
│ │ ├── popup_web_resource_box.xml
│ │ ├── public_content_popup.xml
│ │ ├── screen_float.xml
│ │ ├── select_video_all_or_part.xml
│ │ ├── setting.xml
│ │ ├── shade_activity.xml
│ │ ├── shade_node_panel.xml
│ │ ├── shit_smooth.xml
│ │ ├── show_icon_popup.xml
│ │ ├── top_up_member.xml
│ │ ├── top_up_recharge_popup.xml
│ │ ├── update_app_popup.xml
│ │ ├── user_info_email_popup.xml
│ │ ├── view_item_diy_file.xml
│ │ ├── view_item_file_type.xml
│ │ ├── view_item_friend_app.xml
│ │ ├── wall_pager.xml
│ │ ├── web_input_popup.xml
│ │ └── web_to_file_zip_popup.xml
│ │ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ └── ic_launcher_round.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_round.png
│ │ ├── loading.gif
│ │ ├── member.png
│ │ └── none.png
│ │ ├── mipmap-mdpi
│ │ ├── add.png
│ │ ├── error.png
│ │ ├── floating_title.png
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_round.png
│ │ ├── placeholder.png
│ │ └── select.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_round.png
│ │ ├── mountain.png
│ │ ├── public_content.png
│ │ └── update_img.png
│ │ ├── mipmap-xxhdpi
│ │ ├── apk.png
│ │ ├── banner_protocol.png
│ │ ├── box_bg.png
│ │ ├── dir.png
│ │ ├── fmark.png
│ │ ├── guide_p1.png
│ │ ├── guide_p2.png
│ │ ├── guide_p3.png
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_round.png
│ │ ├── mark_s.png
│ │ ├── more.png
│ │ ├── music.png
│ │ ├── play_video.png
│ │ └── zip.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_round.png
│ │ └── title_head_bg.png
│ │ ├── values
│ │ ├── colors.xml
│ │ ├── dimen.xml
│ │ ├── ic_launcher_background.xml
│ │ ├── integer.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ │ └── xml
│ │ ├── accessibility_service_config.xml
│ │ └── file_path.xml
│ └── test
│ └── java
│ └── com
│ └── srcbox
│ └── file
│ └── ExampleUnitTest.kt
├── build.gradle
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
├── test
└── cookie
└── vid
└── 1627394898791.mp4
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/caches
5 | /.idea/libraries
6 | /.idea/modules.xml
7 | /.idea/workspace.xml
8 | /.idea/navEditor.xml
9 | /.idea/assetWizardSettings.xml
10 | .DS_Store
11 | /build
12 | /captures
13 | .externalNativeBuild
14 | .cxx
15 |
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/.idea/codeStyles/codeStyleConfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
19 |
20 |
--------------------------------------------------------------------------------
/.idea/jarRepositories.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # mouution_box
2 | # 开源协议
3 | 请遵守BSD协议
4 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/app/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/libs/alipaySdk-15.7.5.aar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kaodan/mouution_box/6d6c8a8564609fd99fe55e146b24c05dfd1485c7/app/libs/alipaySdk-15.7.5.aar
--------------------------------------------------------------------------------
/app/libs/m3u8download.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kaodan/mouution_box/6d6c8a8564609fd99fe55e146b24c05dfd1485c7/app/libs/m3u8download.jar
--------------------------------------------------------------------------------
/app/libs/open_sdk_3.5.2.152_r9e04b1c_lite.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kaodan/mouution_box/6d6c8a8564609fd99fe55e146b24c05dfd1485c7/app/libs/open_sdk_3.5.2.152_r9e04b1c_lite.jar
--------------------------------------------------------------------------------
/app/local.properties:
--------------------------------------------------------------------------------
1 | ## This file must *NOT* be checked into Version Control Systems,
2 | # as it contains information specific to your local configuration.
3 | #
4 | # Location of the SDK. This is only used by Gradle.
5 | # For customization when using a Version Control System, please read the
6 | # header note.
7 | #Sat Sep 18 14:12:53 CST 2021
8 | sdk.dir=C\:\\Users\\danke\\AppData\\Local\\Android\\Sdk
9 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/app/release/app-release.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kaodan/mouution_box/6d6c8a8564609fd99fe55e146b24c05dfd1485c7/app/release/app-release.apk
--------------------------------------------------------------------------------
/app/release/output-metadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": 3,
3 | "artifactType": {
4 | "type": "APK",
5 | "kind": "Directory"
6 | },
7 | "applicationId": "com.srcbox.file",
8 | "variantName": "release",
9 | "elements": [
10 | {
11 | "type": "SINGLE",
12 | "filters": [],
13 | "attributes": [],
14 | "versionCode": 22032100,
15 | "versionName": "2.9.999",
16 | "outputFile": "app-release.apk"
17 | }
18 | ],
19 | "elementType": "File"
20 | }
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/srcbox/file/ExampleInstrumentedTest.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file
2 |
3 | import androidx.test.platform.app.InstrumentationRegistry
4 | import androidx.test.ext.junit.runners.AndroidJUnit4
5 |
6 | import org.junit.Test
7 | import org.junit.runner.RunWith
8 |
9 | import org.junit.Assert.*
10 |
11 | /**
12 | * Instrumented test, which will execute on an Android device.
13 | *
14 | * See [testing documentation](http://d.android.com/tools/testing).
15 | */
16 | @RunWith(AndroidJUnit4::class)
17 | class ExampleInstrumentedTest {
18 | @Test
19 | fun useAppContext() {
20 | // Context of the app under test.
21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext
22 | assertEquals("com.srcbox.file", appContext.packageName)
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/assets/font/iconfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kaodan/mouution_box/6d6c8a8564609fd99fe55e146b24c05dfd1485c7/app/src/main/assets/font/iconfont.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/img/home/code.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kaodan/mouution_box/6d6c8a8564609fd99fe55e146b24c05dfd1485c7/app/src/main/assets/img/home/code.png
--------------------------------------------------------------------------------
/app/src/main/assets/img/home/else.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kaodan/mouution_box/6d6c8a8564609fd99fe55e146b24c05dfd1485c7/app/src/main/assets/img/home/else.png
--------------------------------------------------------------------------------
/app/src/main/assets/img/home/happ.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kaodan/mouution_box/6d6c8a8564609fd99fe55e146b24c05dfd1485c7/app/src/main/assets/img/home/happ.png
--------------------------------------------------------------------------------
/app/src/main/assets/img/home/happy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kaodan/mouution_box/6d6c8a8564609fd99fe55e146b24c05dfd1485c7/app/src/main/assets/img/home/happy.png
--------------------------------------------------------------------------------
/app/src/main/assets/img/home/play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kaodan/mouution_box/6d6c8a8564609fd99fe55e146b24c05dfd1485c7/app/src/main/assets/img/home/play.png
--------------------------------------------------------------------------------
/app/src/main/assets/img/home/util.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kaodan/mouution_box/6d6c8a8564609fd99fe55e146b24c05dfd1485c7/app/src/main/assets/img/home/util.png
--------------------------------------------------------------------------------
/app/src/main/assets/img/home/util/cloud.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kaodan/mouution_box/6d6c8a8564609fd99fe55e146b24c05dfd1485c7/app/src/main/assets/img/home/util/cloud.png
--------------------------------------------------------------------------------
/app/src/main/assets/img/home/util/list.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kaodan/mouution_box/6d6c8a8564609fd99fe55e146b24c05dfd1485c7/app/src/main/assets/img/home/util/list.png
--------------------------------------------------------------------------------
/app/src/main/assets/img/home/util/member.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kaodan/mouution_box/6d6c8a8564609fd99fe55e146b24c05dfd1485c7/app/src/main/assets/img/home/util/member.png
--------------------------------------------------------------------------------
/app/src/main/assets/img/home/video.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kaodan/mouution_box/6d6c8a8564609fd99fe55e146b24c05dfd1485c7/app/src/main/assets/img/home/video.png
--------------------------------------------------------------------------------
/app/src/main/assets/img/home/云端.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kaodan/mouution_box/6d6c8a8564609fd99fe55e146b24c05dfd1485c7/app/src/main/assets/img/home/云端.png
--------------------------------------------------------------------------------
/app/src/main/assets/img/home/列表.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kaodan/mouution_box/6d6c8a8564609fd99fe55e146b24c05dfd1485c7/app/src/main/assets/img/home/列表.png
--------------------------------------------------------------------------------
/app/src/main/assets/img/home/资产.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kaodan/mouution_box/6d6c8a8564609fd99fe55e146b24c05dfd1485c7/app/src/main/assets/img/home/资产.png
--------------------------------------------------------------------------------
/app/src/main/assets/img/scann.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kaodan/mouution_box/6d6c8a8564609fd99fe55e146b24c05dfd1485c7/app/src/main/assets/img/scann.png
--------------------------------------------------------------------------------
/app/src/main/assets/json/content_type.json:
--------------------------------------------------------------------------------
1 | {
2 | "png": "image/png",
3 | "jpeg": "image/jpeg",
4 | "m1v": "video/x-mpeg",
5 | "m3u": "audio/mpegurl",
6 | "mp3": "audio/mp3",
7 | "mp4": "video/mpeg4",
8 | "mps": "video/x-mpeg"
9 | }
--------------------------------------------------------------------------------
/app/src/main/assets/json/extTable/ext1.4.json:
--------------------------------------------------------------------------------
1 | {
2 | "图片": {
3 | "ffd8ff": "jpg",
4 | "89504e": "png",
5 | "on": true
6 | },
7 | "动图": {
8 | "474946": "gif",
9 | "on": true
10 | },
11 | "视频": {
12 | "000000": "mp4",
13 | "on": true
14 | },
15 | "音频": {
16 | "fffb90": "mp3",
17 | "494433": "mp3",
18 | "on": true
19 | },
20 | "压缩包": {
21 | "1f8b08": "gz",
22 | "504b03": "zip",
23 | "on": true
24 | },
25 | "文档": {
26 | "7b22e6": "json",
27 | "d3cecf": "txt",
28 | "on": true
29 | },
30 | "OBB": {
31 | "556e69": "",
32 | "on": true
33 | }
34 | }
--------------------------------------------------------------------------------
/app/src/main/assets/json/extTable/extExtractMsg.json:
--------------------------------------------------------------------------------
1 | []
--------------------------------------------------------------------------------
/app/src/main/assets/json/extTable/extHead.json:
--------------------------------------------------------------------------------
1 | {
2 | "图片": [
3 | "ffd8ff",
4 | "89504e"
5 | ],
6 | "动图": [
7 | "474946"
8 | ],
9 | "视频": [
10 | "000000"
11 | ],
12 | "音频": [
13 | "fffb90",
14 | "494433"
15 | ],
16 | "压缩包": [
17 | "1f8b08",
18 | "504b03"
19 | ],
20 | "文档": [
21 | "7b22e6",
22 | "d3cecf"
23 | ]
24 | }
--------------------------------------------------------------------------------
/app/src/main/assets/json/extTable/relativeExtMsg.json:
--------------------------------------------------------------------------------
1 | {
2 | "ffd8ff": "jpg",
3 | "89504e": "png",
4 | "474946": "gif",
5 | "000000": "mp4",
6 | "fffb90": "mp3",
7 | "494433": "mp3",
8 | "1f8b08": "gz",
9 | "504b03": "zip",
10 | "7b22e6": "json",
11 | "d3cecf": "txt"
12 | }
--------------------------------------------------------------------------------
/app/src/main/assets/json/file_lobby_lately_fun.json:
--------------------------------------------------------------------------------
1 | {
2 | "cc": "",
3 | "aa": "",
4 | "vv": ""
5 | }
--------------------------------------------------------------------------------
/app/src/main/assets/json/file_lobby_music_fun.json:
--------------------------------------------------------------------------------
1 | {
2 | "v": "",
3 | "r": "",
4 | "d": "",
5 | "vd": "",
6 | "bbf": "",
7 | "bn": ""
8 | }
--------------------------------------------------------------------------------
/app/src/main/assets/json/file_lobby_picture_fun.json:
--------------------------------------------------------------------------------
1 | {
2 | "qw": "",
3 | "e": "",
4 | "s": "",
5 | "a": "",
6 | "g": "",
7 | "n": ""
8 | }
--------------------------------------------------------------------------------
/app/src/main/assets/json/file_lobby_video_fun.json:
--------------------------------------------------------------------------------
1 | {
2 | "x": "",
3 | "a": "",
4 | "c": "",
5 | "z": "",
6 | "v": "",
7 | "uu": ""
8 | }
--------------------------------------------------------------------------------
/app/src/main/assets/json/main_home_fun.json:
--------------------------------------------------------------------------------
1 | {
2 | "游戏": "img/home/play.png",
3 | "工具": "img/home/util.png",
4 | "娱乐": "img/home/happy.png",
5 | "影视": "img/home/video.png",
6 | "编程": "img/home/code.png",
7 | "H软": "img/home/happ.png",
8 | "其他": "img/home/else.png"
9 | }
--------------------------------------------------------------------------------
/app/src/main/assets/json/main_home_util_fun.json:
--------------------------------------------------------------------------------
1 | {
2 | "进制转换器$true": "\ue616",
3 | "视频转音频$true": "\ue615",
4 | "视频消音$true": "\ue615",
5 | "汉语字典$true": "\ue627",
6 | "文章生成$false": "\ue62e",
7 | "壁纸获取$false": "\ue855",
8 | "锁屏提取$false": "\ue855",
9 | "好好说话$false": "\ue702",
10 | "Bv转Av$false": "\ue6ac",
11 | "图片压缩$false": "\ue6d3",
12 | "以图搜番$false": "\ue62c",
13 | "抖音解析$false": "\ue609",
14 | "快手解析$false": "\ue60a",
15 | "皮虾视频$false": "\ue60f",
16 | "皮虾评论$false": "\ue60f",
17 | "K歌视频$false": "\uE657",
18 | "K歌音乐$false": "\ue657",
19 | "B站封面$false": "\ue641",
20 | "A站封面$false": "\ue673",
21 | "B站视频$false": "\uE641",
22 | "A站视频$false": "\uE673",
23 | "抖音音乐$false": "\uE609",
24 | "查图信息$false": "\uE855",
25 | "抖音图集$false": "\uE855",
26 | "快手图集$false": "\uE855"
27 | }
--------------------------------------------------------------------------------
/app/src/main/assets/json/themes.json:
--------------------------------------------------------------------------------
1 | [
2 | "#E91E63",
3 | "#F44336",
4 | "#9C27B0",
5 | "#673AB7",
6 | "#3F51B5",
7 | "#2196F3",
8 | "#4CAF50",
9 | "#FF5722"
10 | ]
--------------------------------------------------------------------------------
/app/src/main/assets/setting.json:
--------------------------------------------------------------------------------
1 | {
2 |
3 | }
--------------------------------------------------------------------------------
/app/src/main/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kaodan/mouution_box/6d6c8a8564609fd99fe55e146b24c05dfd1485c7/app/src/main/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/adapter/AppFunSelect.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.adapter
2 |
3 | import android.app.Activity
4 | import android.content.Context
5 | import android.view.LayoutInflater
6 | import android.view.View
7 | import android.view.ViewGroup
8 | import android.widget.TextView
9 | import androidx.recyclerview.widget.RecyclerView
10 | import com.srcbox.file.R
11 | import com.srcbox.file.application.EggApplication
12 | import com.srcbox.file.data.AppFunSelectData
13 | import com.srcbox.file.data.`object`.AppSetting
14 | import com.srcbox.file.util.EggUtil
15 | import kotlinx.android.synthetic.main.app_fun_select_recycler_item.view.*
16 |
17 | class AppFunSelect(val context: Context, private val arrayList: ArrayList) :
18 | RecyclerView.Adapter() {
19 | override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
20 | return ViewHolder(
21 | LayoutInflater.from(parent.context)
22 | .inflate(R.layout.app_fun_select_recycler_item, parent, false)
23 | )
24 | }
25 |
26 | override fun getItemCount(): Int {
27 | return arrayList.size
28 | }
29 |
30 | override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
31 | if (holder is ViewHolder) {
32 | holder.bind(position)
33 | }
34 | }
35 |
36 | inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
37 | fun bind(position: Int) {
38 |
39 | // itemView.app_fun_type_select.isSelected = arrayList[position].isSelect
40 | itemView.app_fun_type_title.text = arrayList[position]
41 | itemView.setOnClickListener {
42 | EggUtil.copyText(
43 | context as Activity,
44 | itemView.app_fun_type_title.text.toString()
45 | )
46 | EggUtil.toast("已复制")
47 | }
48 |
49 | itemView.setOnLongClickListener {
50 | EggUtil.copyText(
51 | context as Activity,
52 | itemView.app_fun_type_title.text.toString()
53 | )
54 | EggUtil.toast("已复制")
55 | false
56 | }
57 | }
58 | }
59 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/adapter/ChangeThemeItem.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.adapter
2 |
3 | import android.content.Context
4 | import android.graphics.Color
5 | import android.view.LayoutInflater
6 | import android.view.View
7 | import android.view.ViewGroup
8 | import androidx.recyclerview.widget.RecyclerView
9 | import com.alibaba.fastjson.JSONArray
10 | import com.srcbox.file.R
11 | import com.srcbox.file.data.`object`.AppSetting
12 | import com.srcbox.file.ui.popup.ChangeThemePopup
13 | import com.srcbox.file.util.EggUtil
14 | import com.srcbox.file.util.SpTool
15 | import kotlinx.android.synthetic.main.change_theme_item.view.*
16 |
17 |
18 | class ChangeThemeItem(val changeThemePopup: ChangeThemePopup, val arrayL: JSONArray) :
19 | RecyclerView.Adapter() {
20 | override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
21 | return ViewHolder(
22 | LayoutInflater.from(parent.context).inflate(R.layout.change_theme_item, parent, false)
23 | )
24 | }
25 |
26 | override fun getItemCount(): Int {
27 | return arrayL.size
28 | }
29 |
30 | override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
31 | if (holder is ViewHolder) {
32 | holder.bind(position)
33 | }
34 | }
35 |
36 | inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
37 | fun bind(position: Int) {
38 | val color = arrayL.getString(position)
39 | itemView.theme_text.text = color
40 | itemView.theme_text.setTextColor(Color.parseColor(color))
41 | itemView.setOnClickListener {
42 | val rgbS = EggUtil.toRgba(Color.parseColor(color))
43 | val rgbInt = Color.argb(22, rgbS[0], rgbS[1], rgbS[2])
44 | SpTool.putSettingString("themeColor", color)
45 | SpTool.putSettingString("themeTransColor", rgbInt.toString())
46 | AppSetting.colorStress = color
47 | AppSetting.colorTransTress = "#${rgbInt.toString(16)}"
48 | changeThemePopup.dismiss()
49 | }
50 | }
51 | }
52 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/adapter/ExtractAdapter.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.adapter
2 |
3 | import android.view.LayoutInflater
4 | import android.view.View
5 | import android.view.ViewGroup
6 | import androidx.recyclerview.widget.RecyclerView
7 | import com.srcbox.file.R
8 | import com.srcbox.file.data.ExtractData
9 | import kotlinx.android.synthetic.main.extract_item.view.*
10 |
11 | class ExtractAdapter(private val arrayList: ArrayList): RecyclerView.Adapter() {
12 | override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
13 | return ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.extract_item,parent,false))
14 | }
15 |
16 | override fun getItemCount(): Int {
17 | return arrayList.size
18 | }
19 |
20 | override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
21 | if (holder is ViewHolder){
22 | holder.bind(position)
23 | }
24 | }
25 |
26 | inner class ViewHolder(itemView:View):RecyclerView.ViewHolder(itemView){
27 | fun bind(position: Int){
28 | val arrayO = arrayList[position]
29 | itemView.ext_text.text = arrayO.fileName
30 | itemView.ext_progress.max = arrayO.fileSize.toInt()
31 | itemView.ext_progress.progress = arrayO.fileProgressThis.toInt()
32 | }
33 | }
34 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/adapter/GuidePager.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.adapter
2 |
3 | import androidx.fragment.app.Fragment
4 | import androidx.fragment.app.FragmentManager
5 | import androidx.fragment.app.FragmentPagerAdapter
6 |
7 | class GuidePager(fragmentManager: FragmentManager, private val fragments:ArrayList) :FragmentPagerAdapter(fragmentManager,FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT){
8 | override fun getItem(position: Int): Fragment {
9 | return fragments[position]
10 | }
11 |
12 | override fun getCount(): Int {
13 | return fragments.size
14 | }
15 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/adapter/ImageSelectAdapter.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.adapter
2 |
3 | import android.app.Activity
4 | import android.content.Context
5 | import android.view.LayoutInflater
6 | import android.view.View
7 | import android.view.ViewGroup
8 | import android.widget.ImageView
9 | import androidx.recyclerview.widget.RecyclerView
10 | import com.bumptech.glide.Glide
11 | import com.lxj.xpopup.XPopup
12 | import com.lxj.xpopup.interfaces.XPopupImageLoader
13 | import com.srcbox.file.R
14 | import com.srcbox.file.util.EggUtil
15 | import kotlinx.android.synthetic.main.image_select_item.view.*
16 | import java.io.File
17 |
18 | class ImageSelectAdapter(val context: Context, val arrayList: List) :
19 | RecyclerView.Adapter() {
20 | override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
21 | return ViewHolder(
22 | LayoutInflater.from(parent.context).inflate(R.layout.image_select_item, parent, false)
23 | )
24 | }
25 |
26 | override fun getItemCount(): Int {
27 | return arrayList.size
28 | }
29 | /*
30 | override fun getItemViewType(position: Int): Int {
31 | return position
32 | }*/
33 |
34 | override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
35 | if (holder is ViewHolder) {
36 | holder.bind(position)
37 | }
38 | }
39 |
40 | inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
41 | fun bind(position: Int) {
42 | Glide.with(context).load(arrayList[position]).placeholder(R.mipmap.placeholder)
43 | .error(R.mipmap.error).into(itemView.img)
44 |
45 | itemView.setOnClickListener {
46 | XPopup.Builder(context)
47 | .asImageViewer(itemView.img, arrayList[position], ImageLoader()).show()
48 | }
49 | }
50 | }
51 |
52 | inner class ImageLoader : XPopupImageLoader {
53 | override fun loadImage(position: Int, uri: Any, imageView: ImageView) {
54 | uri as File
55 | Glide.with(context).load(uri).placeholder(R.mipmap.placeholder).error(R.mipmap.error)
56 | .into(imageView)
57 | }
58 |
59 | override fun getImageFile(context: Context, uri: Any): File? {
60 |
61 | uri as File
62 | println(uri.absolutePath)
63 | // return File("")
64 | return Glide.with(context).downloadOnly().load(uri).submit().get();
65 | }
66 | }
67 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/adapter/MainPager.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.adapter
2 |
3 | import android.view.ViewGroup
4 | import androidx.fragment.app.Fragment
5 | import androidx.fragment.app.FragmentManager
6 | import androidx.fragment.app.FragmentPagerAdapter
7 |
8 | class MainPager(fm: FragmentManager, private val fragmentList: List) :
9 | FragmentPagerAdapter(
10 | fm,
11 | BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
12 | ) {
13 | override fun getItem(position: Int): Fragment {
14 | return fragmentList[position]
15 | }
16 |
17 | override fun getCount(): Int {
18 | return fragmentList.size
19 | }
20 |
21 | override fun setPrimaryItem(container: ViewGroup, position: Int, `object`: Any) {
22 | super.setPrimaryItem(container, position, `object`)
23 | }
24 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/adapter/MeData.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.adapter
2 |
3 | import android.view.LayoutInflater
4 | import android.view.View
5 | import android.view.ViewGroup
6 | import android.widget.TextView
7 | import androidx.recyclerview.widget.RecyclerView
8 | import com.srcbox.file.R
9 | import com.srcbox.file.data.UserTogetherData
10 |
11 | class MeData(val arrayList: ArrayList) :
12 | RecyclerView.Adapter() {
13 |
14 | override fun getItemCount(): Int {
15 | return arrayList.size
16 | }
17 |
18 | override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
19 | return ViewHolder(
20 | LayoutInflater.from(parent.context).inflate(R.layout.me_data_item, parent, false)
21 | )
22 | }
23 |
24 | override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
25 | if (holder is ViewHolder) {
26 | holder.bind(position)
27 | }
28 | }
29 |
30 | inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
31 | fun bind(position: Int) {
32 | val numberText = itemView.findViewById(R.id.number_text)
33 | val measureWordText = itemView.findViewById(R.id.measure_word_text)
34 | numberText.text = arrayList[position].numberText
35 | measureWordText.text = arrayList[position].measureWordText
36 | }
37 | }
38 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/adapter/PopupSelectFileAdapter.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.adapter
2 |
3 | import android.view.LayoutInflater
4 | import android.view.View
5 | import android.view.ViewGroup
6 | import androidx.recyclerview.widget.RecyclerView
7 | import com.srcbox.file.R
8 | import com.srcbox.file.ui.popup.filter
9 | import kotlinx.android.synthetic.main.popup_select_file_item.view.*
10 | import java.io.File
11 |
12 | class PopupSelectFileAdapter(public val arrayList: ArrayList?) :
13 | RecyclerView.Adapter() {
14 | override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
15 | return ViewHolder(
16 | LayoutInflater.from(parent.context)
17 | .inflate(R.layout.popup_select_file_item, parent, false)
18 | )
19 | }
20 |
21 | override fun getItemCount(): Int {
22 | return arrayList!!.size
23 | }
24 |
25 | override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
26 | if (holder is ViewHolder) {
27 | holder.bind(position)
28 | }
29 | }
30 |
31 | inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
32 | fun bind(position: Int) {
33 | itemView.psi_title.text = arrayList?.get(position)?.name
34 | itemView.setOnClickListener {
35 | currentFile = arrayList?.get(position)
36 | println(currentFile)
37 | arrayList?.clear()
38 | val fl = filter(currentFile?.listFiles()?.toList())
39 | fl?.let {
40 | arrayList?.addAll(it)
41 | notifyDataSetChanged()
42 | }
43 |
44 |
45 | }
46 | }
47 | }
48 |
49 | companion object {
50 | var currentFile: File? = null
51 | }
52 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/application/EggApplication.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.application
2 |
3 | import android.app.Application
4 | import android.content.Context
5 | import cat.ereza.customactivityoncrash.config.CaocConfig
6 | import cn.leancloud.AVOSCloud
7 | import com.hjq.bar.TitleBar
8 | import com.hjq.bar.style.TitleBarLightStyle
9 | import com.srcbox.file.data.`object`.AppSetting
10 | import com.srcbox.file.logic.`object`.ServiceCreator
11 | import com.srcbox.file.logic.network.UserService
12 | import com.srcbox.file.ui.ErrorCrash
13 | import com.srcbox.file.util.SpTool
14 | import com.tencent.smtt.export.external.TbsCoreSettings
15 | import com.tencent.smtt.sdk.QbSdk
16 |
17 |
18 | class EggApplication : Application() {
19 | companion object {
20 | lateinit var context: Context
21 | var isDebug = false
22 | var isError = true
23 | lateinit var userService:UserService
24 | }
25 |
26 | override fun onCreate() {
27 | super.onCreate()
28 | if (isDebug) {
29 | //慎重使用!!! 这个使用后要注释
30 | /* AVOSCloud.initialize(
31 | this,
32 | "ofdfGpmix6GzKWGHAAcqVI1m-gzGzoHsz",
33 | "yXLaw0DI59FDpFaWSFtlrg9m",
34 | "https://api.aaaaa.ac.cn"
35 | )*/
36 | } else {
37 | AVOSCloud.initializeSecurely(
38 | this,
39 | "ofdfGpmix6GzKWGHAAcqVI1m-gzGzoHsz",
40 | "https://api.aaaaa.ac.cn"
41 | )
42 | }
43 |
44 | val map = HashMap()
45 | map[TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER] = true
46 | QbSdk.initTbsSettings(map)
47 | QbSdk.initX5Environment(this, null)
48 |
49 | TitleBar.initStyle(TitleBarLightStyle(this));
50 | context = applicationContext
51 | userService = ServiceCreator.create()
52 | CaocConfig.Builder.create().errorActivity(ErrorCrash::class.java).apply()
53 | SpTool.setContext(applicationContext)
54 | val p = SpTool.getSettingString(
55 | "fileOutPath",
56 | "山盒2.0"
57 | )
58 | AppSetting.appFileOut = p
59 | AppSetting.colorStress = SpTool.getSettingString("themeColor", AppSetting.colorStress)
60 |
61 | AppSetting.colorTransTress =
62 | "#${SpTool.getSettingString("themeTransColor", "572626675").toInt()
63 | .toString(16)}"
64 | }
65 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/base/BaseContract.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.base
2 |
3 | interface BaseContract {
4 | interface View {
5 | }
6 |
7 | interface Model {
8 |
9 | }
10 |
11 | interface Presenter {
12 |
13 | }
14 | }
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/contract/AppListContract.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.contract
2 |
3 | import android.content.Context
4 | import com.srcbox.file.base.BaseContract
5 | import com.srcbox.file.data.UserAppData
6 |
7 | interface AppListContract {
8 | interface Model : BaseContract.Model {
9 | fun getInstallAppInfo(context: Context): ArrayList
10 | }
11 |
12 | interface View : BaseContract.View {
13 | fun start()
14 | fun listApp(arrayList: ArrayList)
15 | fun loading()
16 | }
17 |
18 | interface Presenter : BaseContract.Presenter {
19 | fun installAppInfo(sortType: Int)
20 | }
21 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/contract/ContractShitSmooth.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.contract
2 |
3 | import com.srcbox.file.base.BaseContract
4 | import java.io.InputStream
5 |
6 | class ContractShitSmooth {
7 | interface Model : BaseContract.Model {
8 | fun getShitSmooth(wordFileIn: InputStream, title: String, len: Long): String
9 | }
10 |
11 | interface View : BaseContract.View {
12 | fun resultShitSmooth(string: String)
13 | fun getTitleV(): String
14 | fun getLen(): Long
15 | fun getWordTab(): InputStream
16 | fun copyShitSmooth()
17 | }
18 |
19 | interface Presenter : BaseContract.Presenter {
20 | fun makeShitSmooth()
21 | }
22 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/contract/MainContract.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.contract
2 |
3 | import com.alibaba.fastjson.JSONObject
4 | import com.srcbox.file.base.BaseContract
5 |
6 | interface MainContract {
7 | interface Model : BaseContract.Model {
8 | fun getAppUpdateAndNotificationInfo(): JSONObject
9 | fun getNetWorkAppTypes(): JSONObject
10 | }
11 |
12 | interface View : BaseContract.View {
13 |
14 | }
15 |
16 | interface Presenter : BaseContract.Presenter {
17 | fun getNetWorkAppTypes()
18 | fun checkAppUpdateAndNotificationInfo()
19 | }
20 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/data/AppFunSelectData.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.data
2 |
3 | data class AppFunSelectData(val selectName: String)
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/data/AppStorageData.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.data
2 |
3 | import android.content.Context
4 | import android.os.Environment
5 | import com.srcbox.file.application.EggApplication
6 | import com.srcbox.file.data.`object`.AppSetting
7 | import java.io.File
8 | import java.io.InputStream
9 |
10 | class AppStorageData() {
11 |
12 |
13 | companion object {
14 | fun getAppConfigStorage(): File {
15 | return File(EggApplication.context.filesDir, "config")
16 | }
17 |
18 | fun getFileOutFile(): File {
19 | return File(Environment.getExternalStorageDirectory(), AppSetting.appFileOut)
20 | }
21 |
22 | fun getAssetsIn(fileN: String): InputStream {
23 | return EggApplication.context.assets.open(fileN)
24 | }
25 | }
26 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/data/ExtractData.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.data
2 |
3 | data class ExtractData(val fileSize:Long,val fileProgressThis:Long,val fileName:String)
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/data/MusicData.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.data
2 |
3 | class MusicData(
4 | val mId: String,
5 | val musicName: String,
6 | val pictureId: String,
7 | val downId: String,
8 | val lyricId: String,
9 | val source: String,
10 | val artist: List
11 | )
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/data/PayMessage.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.data
2 |
3 | data class PayMessage(val totalAmount:String,val subject:String,val body:String,val outTradeNo:String)
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/data/ResourceData.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.data
2 |
3 | import com.tencent.smtt.export.external.interfaces.WebResourceRequest
4 | import okhttp3.MediaType
5 |
6 | data class ResourceData(val title: String, val url: String,val mediaType: MediaType)
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/data/ShowIconData.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.data
2 |
3 | import android.graphics.Bitmap
4 | import com.srcbox.file.view.StokeRect
5 |
6 | data class ShowIconData(
7 | val bitmap: Bitmap,
8 | val stokeRect: StokeRect,
9 | val resourceIdName: String
10 | )
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/data/TypeFrameData.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.data
2 |
3 | data class TypeFrameData(val name: String, val imgLink: String)
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/data/UserAppData.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.data
2 |
3 | import android.graphics.drawable.Drawable
4 | import java.io.File
5 |
6 | data class UserAppData(
7 | val appSource:File,
8 | val appIcon: Drawable,
9 | val name: String,
10 | val appSize: Int,
11 | val appPackageName: String?,
12 | val appInstallTime: Long,
13 | val isOsApp: Boolean
14 | )
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/data/UserTogetherData.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.data
2 |
3 | data class UserTogetherData(val numberText: String, val measureWordText: String)
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/data/object/AppSetting.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.data.`object`
2 |
3 | object AppSetting {
4 | val QQ_APP_ID = "101897261"
5 | private const val tag = "#"
6 | const val colorWhiteShadow = "${tag}EFEFEF"
7 | var colorStress = "${tag}2196f3"
8 | const val colorGray = "${tag}cccccc"
9 | var colorTransTress = "${tag}222196f3"
10 | const val netWorkAppTypes =
11 | "https://juyi-1253946182.cos.ap-chengdu.myqcloud.com/mouu/app_types.json"
12 | const val updateLink = "https://juyi-1253946182.cos.ap-chengdu.myqcloud.com/mouu/json/ver2.json"
13 | const val publicContentUrl =
14 | "https://juyi-1253946182.cos.ap-chengdu.myqcloud.com/mouu/json/public_content.json"
15 | var appFileOut = "山盒2.0"
16 | const val QUN_KEY: String = "1oCNJyhSwyS41UHwrD3WKwMpQ8N5RH3Z"
17 |
18 |
19 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/data/object/AppTypes.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.data.`object`
2 |
3 | import com.alibaba.fastjson.JSONObject
4 |
5 | object AppTypes {
6 | var appTypesData: JSONObject? = null
7 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/data/object/CapData.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.data.`object`
2 |
3 | import android.app.Activity
4 | import android.content.Intent
5 | import android.graphics.Bitmap
6 | import android.view.accessibility.AccessibilityNodeInfo
7 |
8 | object CapData {
9 | const val OK = -1
10 | const val CANCELED = 0
11 | const val RUNING = 1
12 | var currentState = Activity.RESULT_CANCELED
13 | var isStart = false
14 | var activity: Activity? = null
15 | var intentData: Intent? = null
16 | var resultCode: Int = 0
17 | var rootNode: AccessibilityNodeInfo? = null
18 | const val TYPE_SHOW = 6
19 | const val TYPE_NO_SHOW = 7
20 | var type = TYPE_SHOW
21 | val arrayRectList = ArrayList()
22 | var bitmap: Bitmap? = null
23 | }
24 |
25 |
26 |
27 | /*
28 |
29 | data class CapData(var activity: Activity) : Parcelable {
30 | constructor(source: Parcel) : this(
31 | source.readActivity()
32 | )
33 |
34 | override fun describeContents() = 0
35 |
36 | override fun writeToParcel(dest: Parcel, flags: Int): Unit = with(dest) {
37 | writeActivity(activity)
38 | }
39 |
40 | private fun writeActivity(activity: Activity) {
41 | this.activity = activity
42 | }
43 |
44 | companion object {
45 | @JvmField
46 | val CREATOR: Parcelable.Creator = object : Parcelable.Creator {
47 | override fun createFromParcel(source: Parcel): CapData = CapData(source)
48 | override fun newArray(size: Int): Array = arrayOfNulls(size)
49 | }
50 | }
51 | }
52 |
53 | private fun Parcel.readActivity(): Activity? {
54 | return null
55 | }
56 | */
57 |
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/data/object/CapturedImageConfig.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.data.`object`
2 | import androidx.collection.ArraySet
3 | object CapturedImageConfig {
4 | val classNames = ArraySet()
5 | var isServerStart = false
6 | var isServerPermission = false
7 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/data/object/ScreenCaptureInfo.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.data.`object`
2 |
3 | import android.content.Intent
4 | import com.srcbox.file.util.ScreenCaptureUtil
5 |
6 | object ScreenCaptureInfo {
7 | var screenCaptureUtilInterface: ScreenCaptureUtil? = null
8 | var resultCode = 0
9 | var intentData: Intent? = null
10 | val CODE = 1
11 | var isStart = false
12 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/logic/data/MountUserData.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.logic.data
2 |
3 | data class MountUserData(val name: String, val email: String, val mobil: String)
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/logic/network/UserService.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.logic.network
2 |
3 | import com.srcbox.file.logic.data.MountUserData
4 | import com.srcbox.file.util.SpTool
5 | import okhttp3.ResponseBody
6 | import okhttp3.internal.http.RealResponseBody
7 | import retrofit2.Call
8 | import retrofit2.http.GET
9 | import retrofit2.http.Headers
10 | import retrofit2.http.Query
11 |
12 | interface UserService {
13 | /*
14 | 获取当前用户信息
15 | */
16 | @GET("/api/user/getuserinfo")
17 | fun getUserInfo(@Query("token") token: String): Call
18 |
19 | /*
20 | 注册账号
21 | */
22 | @GET("/api/user/register")
23 | fun registerUser(
24 | @Query("username") name: String,
25 | @Query("password") pass: String,
26 | @Query("email") email: String,
27 | @Query("mobile") mobile: String,
28 | @Query("code") code: String
29 | ): Call
30 |
31 | /*
32 | 登录账号
33 | */
34 | @GET("/api/user/login")
35 | fun loginUser(
36 | @Query("account") account: String,
37 | @Query("password") pass: String
38 | ): Call
39 |
40 | /*
41 | 获取验证码图片
42 | */
43 | @GET("/captcha")
44 | fun getImageValidCode(): Call
45 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/logic/object/MountUser.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.logic.`object`
2 |
3 | import com.srcbox.file.logic.data.MountUserData
4 |
5 | object MountUser {
6 | val currentUser: MountUserData? = null
7 | // fun getCurrentUser(): MountUserData? = mountUserData
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/logic/object/ServiceCreator.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.logic.`object`
2 |
3 | import com.franmontiel.persistentcookiejar.ClearableCookieJar
4 | import com.franmontiel.persistentcookiejar.PersistentCookieJar
5 | import com.franmontiel.persistentcookiejar.cache.SetCookieCache
6 | import com.franmontiel.persistentcookiejar.persistence.SharedPrefsCookiePersistor
7 | import com.srcbox.file.application.EggApplication
8 | import com.srcbox.file.util.SpTool
9 | import okhttp3.Cookie
10 | import okhttp3.CookieJar
11 | import okhttp3.HttpUrl
12 | import okhttp3.OkHttpClient
13 | import retrofit2.Retrofit
14 | import retrofit2.converter.gson.GsonConverterFactory
15 |
16 |
17 | object ServiceCreator {
18 | private const val BASE_URL = "http://192.168.1.54:8045/"
19 | val okHttpClient = OkHttpClient().newBuilder().addInterceptor {
20 | val original = it.request()
21 | val url = original.url.newBuilder()
22 | .addQueryParameter("token", SpTool.getSettingString("token", "")).build()
23 | val req = original.newBuilder().method(original.method, original.body).url(url).build()
24 | it.proceed(req)
25 | }
26 | private val retrofit: Retrofit =
27 | Retrofit.Builder().baseUrl(BASE_URL).client(okHttpClient.build())
28 | .addConverterFactory(GsonConverterFactory.create())
29 | .build()
30 |
31 | fun create(serviceClass: Class): T = retrofit.create(serviceClass)
32 |
33 | inline fun create(): T = create(T::class.java)
34 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/model/AppListModel.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.model
2 |
3 | import android.app.Activity
4 | import android.content.Context
5 | import com.srcbox.file.contract.AppListContract
6 | import com.srcbox.file.data.UserAppData
7 | import com.srcbox.file.ui.AppList
8 | import com.srcbox.file.util.LoadAppList
9 |
10 | class AppListModel : AppListContract.Model {
11 | override fun getInstallAppInfo(context: Context): ArrayList {
12 |
13 | val loadAppList = LoadAppList(context as Activity)
14 | var inf = loadAppList.getApps()
15 |
16 |
17 | AppList.searchStr.trim()
18 | when (AppList.typeAppsMessage?.get(0).toString()) {
19 | "all" -> {
20 | inf = inf.filter {
21 | (it.name.contains(
22 | AppList.searchStr,
23 | true
24 | ) || it.appPackageName?.contains(AppList.searchStr, true)!!)
25 | } as ArrayList
26 | }
27 |
28 | "os" -> {
29 | inf = inf.filter {
30 | it.isOsApp && (it.name.contains(
31 | AppList.searchStr,
32 | true
33 | ) || it.appPackageName?.contains(
34 | AppList.searchStr
35 | , true
36 | )!!)
37 | } as ArrayList
38 | }
39 |
40 | else -> {
41 | inf = inf.filter {
42 | var b = false
43 | if (it.appPackageName?.isNotEmpty()!!) {
44 | if (AppList.typeAppsMessage!!.contains(it.appPackageName)) {
45 | b =
46 | true && (it.name.contains(
47 | AppList.searchStr,
48 | true
49 | ) || it.appPackageName.contains(
50 | AppList.searchStr
51 | , true
52 | ))
53 | }
54 | }
55 | b
56 | } as ArrayList
57 | }
58 | }
59 |
60 | return inf
61 | }
62 | }
63 |
64 |
65 | /* runOnUiThread {
66 |
67 | }*/
68 | /* if (AppList.typeAppsMessage?.get(0).toString() != "all") {
69 |
70 | }*/
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/model/MainModel.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.model
2 |
3 | import com.alibaba.fastjson.JSON
4 | import com.alibaba.fastjson.JSONObject
5 | import com.srcbox.file.contract.MainContract
6 | import com.srcbox.file.data.AppStorageData
7 | import com.srcbox.file.data.`object`.AppSetting
8 | import com.srcbox.file.util.EggIO
9 | import com.srcbox.file.util.EggUtil
10 | import okhttp3.*
11 | import java.io.File
12 | import java.io.IOException
13 |
14 | class MainModel : MainContract.Model {
15 | override fun getAppUpdateAndNotificationInfo(): JSONObject {
16 | TODO("Not yet implemented")
17 | }
18 |
19 | override fun getNetWorkAppTypes():JSONObject {
20 | return JSON.parseObject(EggIO.readFile(AppStorageData.getAssetsIn("json/apptypesx.json")))
21 | }
22 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/model/ShitSmoothModel.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.model
2 |
3 | import com.srcbox.file.contract.ContractShitSmooth
4 | import com.srcbox.file.ui.util.BlindWork
5 | import java.io.InputStream
6 |
7 | class ShitSmoothModel : ContractShitSmooth.Model {
8 | override fun getShitSmooth(wordFileIn: InputStream, title: String, len: Long): String {
9 | return BlindWork().speak(
10 | wordFileIn,
11 | title,
12 | len
13 | )
14 | }
15 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/payutil/PayConfig.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.payutil
2 |
3 | object PayConfig {
4 | const val APP_ID = "2021001161631050"
5 | const val RSA2_PRIVATE =
6 | "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCdKzlW3rpBz78e5FEYa5HDMcVIaJqhA/CLqF+B1KeB+iKk/Dvccex+dLQGVriUMJEm4Z8t6+Xb8yWImA2EakJHNOAKAcKqkCJsj6kR1MksCXnhkn+5+ljVpq5MpnuGJpjY1jWmMqo0G7dSOSWwvsNdCgJXdPnPb248IFxl3uYP2fnLUVkv/p0Hd1x12tSR0VwPastqXLPdIDbF0ASsHYAub56CsbZw9xzF2+jWgkqu5ZJGFoMC9HjGAltPD2DeARpv+G9eAAl97ZI8zhlp+xsQo9iV32CdmPT5wxnpF0RZnL5t/WBL6Ngf9pKIf6joxVZKm373yt8kS/G/zDiqT0k5AgMBAAECggEAXUPLENu2l1saRNCjtuQOaVBdi6xXJflaguV1V2vDwwOWD2WGeDg6aIgEVEad3YI8gGAev3devXi56yafztXnYq3jzMxioihJ5TYS0/v7LOCqrMrsdIY0tQPmJqIcZuz8gqAK0gb6rVVNIcO7s/hfohRQc2l83DV5qsBhVCpDR1/ZZgmPQjGv+A8O6NU6CdfubHsQxAUAo3UtZ7gLi/63SjiKVbeumLtF/oVYNSL7bi6CWOMqhno+2sP97T3gASdFwfGb1ElQnPkgJ+jRMartOKWj40xDxqMAdIvJq1ukCHSkBVVXGmu+l3czbYhcZlTudPgvDVa0IOlhZWtLeDnoaQKBgQDZH75bJaYNTorUJAKKYIbearxIGuFnlUMdcCw4GBIutz92m810ScmEk7kn6a13/s8dhh2b48jDWXeu6uyKIUw8q/ATlLD4bHl5TNULTi54NfhbXO06n+aaFRHo4bUzIg5jVHgJKvR0K2bI3MI8EA7U4ljUwjIDX/pTBCRkp8LnywKBgQC5T1Tep+cJHyIEUyJaLm8uSwdzIuRkfR5hVHIGnGBKwhz4ZlGe7Swnm3McK8D6pnAbyFKCjdi+wGY6KRqg7HLjhi+h2l0U8zblwcTwfx4tKKs46hxgMGQsDdUNb3WpSgkos/RY/JK/6EDhzE/4EL++DCbH0kQn+8miHHtqZpiKiwKBgCqbxSJj8AM6f5oD+w+mw7DQJ2TLCaLnMsWLJtJXPvI1+dlP1/DTLh27U6GWhPlAYuq7UAIwoExduVP1PDgbMrfRUgq1qkkGGIyKXGCclhf3F2buhIt1p65jJiGacZG4RDSP9gJukIxfnAsc720UBaUXSjFubpwk8J3r+Sxbk68jAoGAHQZg+7L+y/31XQoMcmWdgnm8A/uuHFNAo+wPJBvwNSVsVjfohuUNKnL9t6bexiO1oZRh4BMJpO8L1AZGJniCkkKdSVOjirmBmsEb8LNobZhWIUcCBMrvlbrg6QbRPh/biWWOWzXMYoSlTPiseeVdsw3CMUAs7rpQXbTqW8MQF3sCgYBt6AA81C34rgSiV3dLb3324Lgz2MdvI+63q94rI5cm0ckfN/zLdlWsDmAOWJ+fvcdgXvaZ7VnK0B28DDcYAlVQWZhQh1Ra+PT8aTF1gr2YuACNw+WEpwSTVXgGRr4jpTfS8HchqZVQQrl0eU+JtwB+5qdABOwwZBkazNF+RiBPvA=="
7 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/payutil/PayResult.java:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.payutil;
import android.text.TextUtils;
import java.util.Map;
public class PayResult {
private String resultStatus;
private String result;
private String memo;
public PayResult(Map rawResult) {
if (rawResult == null) {
return;
}
for (String key : rawResult.keySet()) {
if (TextUtils.equals(key, "resultStatus")) {
resultStatus = rawResult.get(key);
} else if (TextUtils.equals(key, "result")) {
result = rawResult.get(key);
} else if (TextUtils.equals(key, "memo")) {
memo = rawResult.get(key);
}
}
}
@Override
public String toString() {
return "resultStatus={" + resultStatus + "};memo={" + memo
+ "};result={" + result + "}";
}
/**
* @return the resultStatus
*/
public String getResultStatus() {
return resultStatus;
}
/**
* @return the memo
*/
public String getMemo() {
return memo;
}
/**
* @return the result
*/
public String getResult() {
return result;
}
}
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/payutil/SignUtils.java:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.payutil;
2 |
3 | import java.security.KeyFactory;
4 | import java.security.PrivateKey;
5 | import java.security.spec.PKCS8EncodedKeySpec;
6 |
7 | public class SignUtils {
8 |
9 | private static final String ALGORITHM = "RSA";
10 |
11 | private static final String SIGN_ALGORITHMS = "SHA1WithRSA";
12 |
13 | private static final String SIGN_SHA256RSA_ALGORITHMS = "SHA256WithRSA";
14 |
15 | private static final String DEFAULT_CHARSET = "UTF-8";
16 |
17 | private static String getAlgorithms(boolean rsa2) {
18 | return rsa2 ? SIGN_SHA256RSA_ALGORITHMS : SIGN_ALGORITHMS;
19 | }
20 |
21 | public static String sign(String content, String privateKey, boolean rsa2) {
22 | try {
23 | PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(
24 | Base64.decode(privateKey));
25 | KeyFactory keyf = KeyFactory.getInstance(ALGORITHM);
26 | PrivateKey priKey = keyf.generatePrivate(priPKCS8);
27 |
28 | java.security.Signature signature = java.security.Signature
29 | .getInstance(getAlgorithms(rsa2));
30 |
31 | signature.initSign(priKey);
32 | signature.update(content.getBytes(DEFAULT_CHARSET));
33 |
34 | byte[] signed = signature.sign();
35 |
36 | return Base64.encode(signed);
37 | } catch (Exception e) {
38 | e.printStackTrace();
39 | }
40 |
41 | return null;
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/presenter/AppListPresenter.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.presenter
2 |
3 | import android.content.Context
4 | import com.srcbox.file.contract.AppListContract
5 | import com.srcbox.file.model.AppListModel
6 | import com.srcbox.file.ui.AppList
7 |
8 | class AppListPresenter(val v: AppListContract.View) : AppListContract.Presenter {
9 | private val appListModel = AppListModel()
10 | private var t: Thread? = null
11 | override fun installAppInfo(sortType: Int) {
12 | v.start()
13 | t = Thread {
14 | v.loading()
15 | val arrL = appListModel.getInstallAppInfo(v as Context)
16 | when (sortType) {
17 | AppList.sortSizeType -> {
18 | arrL.sortByDescending { it.appSize }
19 | }
20 |
21 | AppList.sortTimeType -> {
22 | arrL.sortByDescending { it.appInstallTime }
23 | }
24 | }
25 | v.listApp(arrL)
26 | }
27 | t?.start()
28 | }
29 |
30 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/presenter/MainPresenter.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.presenter
2 |
3 | import com.alibaba.fastjson.JSONArray
4 | import com.srcbox.file.contract.MainContract
5 | import com.srcbox.file.model.MainModel
6 |
7 | class MainPresenter(val v: MainContract.View) : MainContract.Presenter {
8 | private val mainModel: MainContract.Model = MainModel()
9 | override fun getNetWorkAppTypes() {
10 | /*val joIt = mainModel.getNetWorkAppTypes()
11 | val appTypesJsonObject = joIt.getJSONObject("apptypes")
12 | val allJ = JSONArray()
13 | val osJ = JSONArray()
14 | allJ.add("all")
15 | osJ.add("os")
16 | appTypesJsonObject["全部\$\ue610"] =
17 | allJ
18 | appTypesJsonObject["系统\$\ue64c"] =
19 | osJ*/
20 | }
21 |
22 | override fun checkAppUpdateAndNotificationInfo() {
23 |
24 | }
25 | }
26 |
27 | /*
28 | val appTypesName = "appTypes.json"
29 | val version = 1
30 | val currentVersion = jsonObject.getInt("version")
31 | if (currentVersion > version) {}
32 | */
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/presenter/ShitSmoothPresenter.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.presenter
2 |
3 | import android.content.Context
4 | import com.srcbox.file.contract.ContractShitSmooth
5 | import com.srcbox.file.model.ShitSmoothModel
6 | import com.srcbox.file.util.EggUtil
7 |
8 | class ShitSmoothPresenter(val view: ContractShitSmooth.View) : ContractShitSmooth.Presenter {
9 | private val shitSmoothModel = ShitSmoothModel()
10 | override fun makeShitSmooth() {
11 | if (view.getTitleV().isEmpty() || view.getLen() == 0L) {
12 | EggUtil.toast("参数不能为空")
13 | }
14 | view.resultShitSmooth(
15 | shitSmoothModel.getShitSmooth(
16 | view.getWordTab(),
17 | view.getTitleV(),
18 | view.getLen()
19 | )
20 | )
21 | }
22 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/receiver/PackageReceiver.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.receiver
2 |
3 | import android.content.BroadcastReceiver
4 | import android.content.Context
5 | import android.content.Intent
6 |
7 | class PackageReceiver: BroadcastReceiver(){
8 |
9 | companion object {
10 | var selPackageName = ""
11 | }
12 | override fun onReceive(context: Context?, intent: Intent?) {
13 | val packageName = intent?.dataString
14 | if (intent!!.action == Intent.ACTION_PACKAGE_REMOVED){
15 | if (packageName == selPackageName){
16 |
17 | }
18 | }
19 | }
20 |
21 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/ui/ImageSelectActivity.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.ui
2 |
3 | import android.os.Bundle
4 | import androidx.appcompat.app.AppCompatActivity
5 | import androidx.recyclerview.widget.StaggeredGridLayoutManager
6 | import com.srcbox.file.R
7 | import com.srcbox.file.adapter.ImageSelectAdapter
8 | import com.srcbox.file.util.GlobUtil
9 | import kotlinx.android.synthetic.main.image_select.*
10 | import java.io.File
11 |
12 | class ImageSelectActivity : AppCompatActivity() {
13 | private var fileArr = ArrayList()
14 | override fun onCreate(savedInstanceState: Bundle?) {
15 | super.onCreate(savedInstanceState)
16 | setContentView(R.layout.image_select)
17 | GlobUtil.changeTitle(this, false)
18 | val filePath = intent.getStringExtra("filePath")
19 | path_text.text = filePath
20 | val f = File(filePath!!)
21 | listFile(f)
22 | fileArr = fileArr.filter {
23 | it.absolutePath.endsWith(".png") || it.absolutePath.endsWith(".jpg") || it.absolutePath.endsWith(
24 | ".gif"
25 | )
26 | } as ArrayList
27 | image_select_r.layoutManager =
28 | StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL)
29 | image_select_r.adapter = ImageSelectAdapter(this, fileArr)
30 | }
31 |
32 | private fun listFile(file: File) {
33 | if (file.isDirectory) {
34 | // fileArr.addAll(file.listFiles()!!)
35 | file.listFiles()!!.forEach {
36 | listFile(it)
37 | }
38 | }
39 | if (file.isDirectory) {
40 | fileArr.addAll(file.listFiles()!!)
41 | } else {
42 | fileArr.add(file)
43 | }
44 | }
45 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/ui/PlayVideoActivity.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.ui
2 |
3 | import android.annotation.SuppressLint
4 | import android.graphics.Bitmap
5 | import androidx.appcompat.app.AppCompatActivity
6 | import android.os.Bundle
7 | import com.lxj.xpopup.XPopup
8 | import com.srcbox.file.R
9 | import com.srcbox.file.util.GlobUtil
10 | import com.tencent.smtt.sdk.WebView
11 | import com.tencent.smtt.sdk.WebViewClient
12 |
13 | class PlayVideoActivity : AppCompatActivity() {
14 | @SuppressLint("SetJavaScriptEnabled")
15 | override fun onCreate(savedInstanceState: Bundle?) {
16 | super.onCreate(savedInstanceState)
17 | setContentView(R.layout.activity_play_video)
18 | GlobUtil.changeTitle(this)
19 | val asLoading = XPopup.Builder(this).asLoading()
20 | asLoading.show()
21 | val webView = findViewById(R.id.video_web)
22 | webView.settings.javaScriptEnabled = true
23 | webView.settings.useWideViewPort = true
24 | webView.settings.loadWithOverviewMode = true
25 | webView.settings.blockNetworkImage = false
26 | webView.settings.blockNetworkLoads = false
27 | webView.settings.domStorageEnabled = true
28 | webView.settings.builtInZoomControls = true
29 | webView.settings.displayZoomControls = false
30 | webView.settings.setGeolocationEnabled(true)
31 | webView.settings.setSupportZoom(true)
32 | webView.loadUrl(intent.getStringExtra("url"))
33 | webView.webViewClient = object : WebViewClient() {
34 | override fun onPageFinished(p0: WebView?, p1: String?) {
35 | super.onPageFinished(p0, p1)
36 | asLoading.dismiss()
37 | }
38 |
39 | override fun onPageStarted(p0: WebView?, p1: String?, p2: Bitmap?) {
40 | super.onPageStarted(p0, p1, p2)
41 | }
42 | }
43 | }
44 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/ui/apps/activity/AppsActivity.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.ui.apps.activity
2 |
3 | import androidx.appcompat.app.AppCompatActivity
4 | import android.os.Bundle
5 | import com.srcbox.file.R
6 |
7 | class AppsActivity : AppCompatActivity() {
8 |
9 | override fun onCreate(savedInstanceState: Bundle?) {
10 | super.onCreate(savedInstanceState)
11 | setContentView(R.layout.activity_apps)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/ui/apps/code/LoadApps.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.ui.apps.code
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/ui/extractManager/code/ExtractInstance.kt:
--------------------------------------------------------------------------------
1 | package com.egg.extractmanager
2 |
3 | import com.srcbox.file.ui.extractManager.code.ExtractTaskMessage
4 | import java.io.Serializable
5 |
6 | interface ExtractInstance : Serializable {
7 |
8 | //开始
9 | fun start()
10 |
11 | //暂停
12 | fun pause()
13 |
14 | //关闭
15 | fun cancel()
16 |
17 | //设置监听
18 | fun setListener(extractListener: ExtractListener?)
19 |
20 | //获得监听
21 | fun getListener(): ExtractListener?
22 |
23 | //获取状态
24 | fun getState(): Int
25 |
26 | //获取信息
27 | fun getMessages(): ExtractTaskMessage
28 |
29 | //是否为新任务
30 | fun getIsNewTask(): Boolean
31 |
32 | //是否为新任务
33 | fun setIsNewTask(boolean: Boolean)
34 |
35 | //设置当前索引
36 | fun setPosition(int: Int)
37 |
38 | //初始化状态
39 | fun initData()
40 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/ui/extractManager/code/ExtractListener.kt:
--------------------------------------------------------------------------------
1 | package com.egg.extractmanager
2 |
3 | interface ExtractListener {
4 | fun onProgress(float: Float)
5 | fun onStart()
6 | fun onPause()
7 | fun onCancel()
8 | fun onSuccess()
9 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/ui/extractManager/code/ExtractResourceDir.kt:
--------------------------------------------------------------------------------
1 | package com.egg.extractmanager
2 |
3 | class ExtractResourceDir {
4 |
5 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/ui/extractManager/code/ExtractTaskMessage.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.ui.extractManager.code
2 |
3 | import java.io.File
4 | import java.io.Serializable
5 |
6 | data class ExtractTaskMessage(
7 | val file: File,
8 | val appName: String,
9 | var state: Int = -1,
10 | var total: Int = 0,
11 | var thisFilePos: Int = 0
12 | ) :
13 | Serializable
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/ui/fragment/main_pager/GuideA.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.ui.fragment.main_pager
2 |
3 | import android.os.Bundle
4 | import android.view.LayoutInflater
5 | import android.view.View
6 | import android.view.ViewGroup
7 | import androidx.fragment.app.Fragment
8 | import com.bumptech.glide.Glide
9 | import com.srcbox.file.R
10 | import com.srcbox.file.application.EggApplication
11 | import com.srcbox.file.util.EggUtil
12 |
13 | class GuideA : Fragment() {
14 | override fun onCreateView(
15 | inflater: LayoutInflater,
16 | container: ViewGroup?,
17 | savedInstanceState: Bundle?
18 | ): View? {
19 | val v = LayoutInflater.from(context).inflate(R.layout.guide_page_a, container, false)
20 | Glide.with(this).load(R.mipmap.guide_p1).into(v.findViewById(R.id.guide_p1))
21 | EggUtil.setViewRadius(v, "#ffffff", 1, "#ffffff", EggUtil.dp2px(EggApplication.context,8f).toFloat())
22 | v.setOnClickListener {
23 | EggUtil.toast("请左右滑动")
24 | }
25 | return v
26 | }
27 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/ui/fragment/main_pager/GuideB.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.ui.fragment.main_pager
2 |
3 | import android.os.Bundle
4 | import android.view.LayoutInflater
5 | import android.view.View
6 | import android.view.ViewGroup
7 | import androidx.fragment.app.Fragment
8 | import com.bumptech.glide.Glide
9 | import com.srcbox.file.R
10 | import com.srcbox.file.application.EggApplication
11 | import com.srcbox.file.util.EggUtil
12 |
13 | class GuideB : Fragment() {
14 | override fun onCreateView(
15 | inflater: LayoutInflater,
16 | container: ViewGroup?,
17 | savedInstanceState: Bundle?
18 | ): View? {
19 | val v = LayoutInflater.from(context).inflate(R.layout.guide_page_b, container, false)
20 | Glide.with(this).load(R.mipmap.guide_p1).into(v.findViewById(R.id.guide_p2))
21 | EggUtil.setViewRadius(
22 | v,
23 | "#ffffff",
24 | 1,
25 | "#ffffff",
26 | EggUtil.dp2px(EggApplication.context, 8f).toFloat()
27 | )
28 | v.setOnClickListener {
29 | EggUtil.toast("请左右滑动")
30 | }
31 | return v
32 | }
33 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/ui/fragment/main_pager/GuideC.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.ui.fragment.main_pager
2 |
3 | import android.os.Bundle
4 | import android.view.LayoutInflater
5 | import android.view.View
6 | import android.view.ViewGroup
7 | import androidx.fragment.app.Fragment
8 | import com.bumptech.glide.Glide
9 | import com.srcbox.file.R
10 | import com.srcbox.file.application.EggApplication
11 | import com.srcbox.file.util.EggUtil
12 |
13 | class GuideC : Fragment() {
14 | override fun onCreateView(
15 | inflater: LayoutInflater,
16 | container: ViewGroup?,
17 | savedInstanceState: Bundle?
18 | ): View? {
19 | val v = LayoutInflater.from(context).inflate(R.layout.guide_page_c, container, false)
20 | Glide.with(this).load(R.mipmap.guide_p1).into(v.findViewById(R.id.guide_p3))
21 | EggUtil.setViewRadius(v, "#ffffff", 1, "#ffffff", EggUtil.dp2px(EggApplication.context,8f).toFloat())
22 | v.setOnClickListener {
23 | EggUtil.toast("请左右滑动")
24 | }
25 | return v
26 | }
27 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/srcbox/file/ui/fragment/main_pager/GuideD.kt:
--------------------------------------------------------------------------------
1 | package com.srcbox.file.ui.fragment.main_pager
2 |
3 | import android.content.Intent
4 | import android.os.Bundle
5 | import android.view.LayoutInflater
6 | import android.view.View
7 | import android.view.ViewGroup
8 | import android.widget.Button
9 | import android.widget.ImageView
10 | import androidx.fragment.app.Fragment
11 | import com.bumptech.glide.Glide
12 | import com.srcbox.file.R
13 | import com.srcbox.file.application.EggApplication
14 | import com.srcbox.file.ui.MainActivity
15 | import com.srcbox.file.util.EggIO
16 | import com.srcbox.file.util.EggUtil
17 | import com.srcbox.file.util.SpTool
18 | import com.tencent.smtt.sdk.WebView
19 | import www.linwg.org.lib.LCardView
20 | import kotlin.concurrent.thread
21 | import kotlin.system.exitProcess
22 |
23 |
24 | class GuideD : Fragment() {
25 | override fun onCreateView(
26 | inflater: LayoutInflater,
27 | container: ViewGroup?,
28 | savedInstanceState: Bundle?
29 | ): View? {
30 | var isShow = false
31 | val v = LayoutInflater.from(context).inflate(R.layout.guide_page_d, container, false)
32 | Glide.with(this).load(R.mipmap.banner_protocol)
33 | .into(v.findViewById(R.id.title_img))
34 | v.findViewById(R.id.agree).setOnClickListener {
35 | if (!isShow) {
36 | EggUtil.toast("请查看协议")
37 | return@setOnClickListener
38 | }
39 |
40 | SpTool.putSettingString("once", true.toString())
41 | startActivity(Intent(activity, MainActivity::class.java))
42 | activity?.finish()
43 | }
44 |
45 | v.findViewById(R.id.refuse).setOnClickListener {
46 | exitProcess(0)
47 | }
48 |
49 | v.findViewById